容器部署jenkins定时构建于本地时间不一致

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)

容器部署jenkins定时构建于本地时间不一致_第1张图片

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

容器部署jenkins定时构建于本地时间不一致_第2张图片

4. 问题现象

容器部署jenkins定时构建于本地时间不一致_第3张图片

当我们运行容器后,设置了定时任务但是发现执行时间于本地时间不一致,我设置17点定时构建,
但是实际的执行是在凌晨

5. 处理方式

5.1 查看jenkins环境内容:系统管理–> 系统信息–> user.timezone查看时区为(Etc/UTC)

容器部署jenkins定时构建于本地时间不一致_第4张图片

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

容器部署jenkins定时构建于本地时间不一致_第5张图片

你可能感兴趣的:(jenkins,jenkins,docker)