1. Dockerfile
FROM jenkins/jenkins:2.411-jdk11
USER root
#以下生成密钥方式为旧格式,因为新格式暂不能被"Publish over SSH--->Jenkins SSH Key"功能识别
RUN ssh-keygen -q -m PEM -t rsa -b 2048 -N '' -f /root/.ssh/id_rsa
ADD ./apache-maven-3.6.3-bin.tar.gz /usr/local/
ADD ./jdk1.8.0_221.tar.gz /usr/local
#配置maven全局环境变量
RUN echo "export MAVEN_HOME=/usr/local/apache-maven-3.6.3 \n export PATH=\$MAVEN_HOME/bin:\$PATH:/opt/java/openjdk/bin" >> /etc/profile
RUN echo "source /etc/profile" >> /root/.bashrc
2. docker-compose
version: "3.5"
services:
jenkins:
image: harbor.od.com/jenkins/jenkins-ssh-mvnset:v2.411
ports:
- 8081:8080
- 50000:50000
restart: "always"
container_name: jenkins
environment:
JAVA_OPTS: "-Duser.timezone=Asia/Shanghai"
JAVA_OPTS: "-server -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
# 配置访问路径,不然访问404
JENKINS_OPTS: "--prefix=/jenkins"
JENKINS_ARGS: "--prefix=/jenkins"
volumes:
- /etc/localtime:/etc/localtime:ro
- /docker-compose/jenkins/jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /docker-compose/jenkins/shell:/shell
privileged: true
3. 定时构建(类似于crontab)
分散负载应该用 ‘H 15 * * *’ 而不是 ‘46 15 * * *
提示"H"的意思是哈希,比如有很多工程都在同一时间去定时构建,系统认为会对负载有一定影响,使用"H"同样
还是会生效,就是避开系统高峰期执行,如果某工程必须在某一个点执行可以用"H(30-31) 15 * * *"来表示
4. 问题现象
当我们运行容器后,设置了定时任务但是发现执行时间于本地时间不一致,我设置17点定时构建,
但是实际的执行是在凌晨
5. 处理方式
5.1 查看jenkins环境内容:系统管理–> 系统信息–> user.timezone查看时区为(Etc/UTC)
文章来源:https://www.toymoban.com/news/detail-615759.html
Etc/UTC是协调世界时(Coordinated Universal Time)的一个时区,
也被称为格林威治平均时间(Greenwich Mean Time)或世界标准时间。
Asia/Shanghai则是中国上海所在的时区,在东八区,UTC+8(北京时间)。
Etc/UTC时区表示的是全球的标准时间,没有时区偏移和夏令时调整,
Asia/Shanghai时区表示的是中国上海的本地时间,在东八区,不考虑夏令时。
5.2 挂载/etc/timezone文件至容器
#需要确认宿主机的timezone时区是否东八区
[root@zabbix jenkins]# cat /etc/timezone
Asia/Shanghai
#docker-compose增加挂载文件,定时构建就和本地时间保持一致了
volumes:
- /etc/timezone:/etc/timezone
文章来源地址https://www.toymoban.com/news/detail-615759.html
到了这里,关于容器部署jenkins定时构建于本地时间不一致的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!