Dockerfile
1 2 3 4 5 6 7 8 9
| 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
|
docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 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
|
定时构建(类似于crontab)

1 2 3
| 分散负载应该用 ‘H 15 * * *’ 而不是 ‘46 15 * * * 提示"H"的意思是哈希,比如有很多工程都在同一时间去定时构建,系统认为会对负载有一定影响,使用"H"同样 还是会生效,就是避开系统高峰期执行,如果某工程必须在某一个点执行可以用"H(30-31) 15 * * *"来表示
|

问题现象

1 2
| 当我们运行容器后,设置了定时任务但是发现执行时间于本地时间不一致,我设置17点定时构建, 但是实际的执行是在凌晨
|
处理方式
查看jenkins环境内容
系统管理 ➔系统信息 ➔user.timezone查看时区为(Etc/UTC)

1 2 3 4 5 6
| Etc/UTC是协调世界时(Coordinated Universal Time)的一个时区, 也被称为格林威治平均时间(Greenwich Mean Time)或世界标准时间。 Asia/Shanghai则是中国上海所在的时区,在东八区,UTC+8(北京时间)。
Etc/UTC时区表示的是全球的标准时间,没有时区偏移和夏令时调整, Asia/Shanghai时区表示的是中国上海的本地时间,在东八区,不考虑夏令时。
|
挂载/etc/timezone文件至容器
1 2 3 4 5 6 7
| #需要确认宿主机的timezone时区是否东八区 [root@zabbix jenkins]# cat /etc/timezone Asia/Shanghai
#docker-compose增加挂载文件,定时构建就和本地时间保持一致了 volumes: - /etc/timezone:/etc/timezone
|
