jenkins时区设置

在Centos系统配置

背景

直接搭建好jenkins没有留意时间这块,执行job的时候发现,执行时间和服务器时间不对,需要设置时区

步骤

找到jenkins的启动配置,centos在:

/etc/sysconfig/jenkins

修改如下:

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai"

然后重启jenkins即可

Tips

可参考这个地方:https://wiki.jenkins.io/display/JENKINS/Change+time+zone

 

出处:https://www.cnblogs.com/jwentest/p/7270692.html

=======================================================================================

Jenkins 是通过 apt 安装,修改 /etc/default/jenkinsJAVA_ARGS 配置增加参数 -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai

参考:

 

出处:https://www.cnblogs.com/shaobin0604/p/12559979.html

=======================================================================================

在上面的连接 Jenkins 时区设置问题 ,评论中有很多人给出了解答方法,下面摘抄部分内容


在【系统管理】-【脚本命令行】里运行

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

都没有人看官方文档Change+time+zone的吗?


楼上别装逼,坑啊,我还以为真的是一直没解决,差点误导我。
根本原因是jenkins用的是jvm的时间,所以会导致跟后面修改的系统时间,还是不一样,照下面的做法就可以了。我已经解决了。

Linux下jvm时区设置
在一个精简的Linux安装上jre,发现所有的java程序获取的时间都不是系统时间。后来发现原来是时区不对。java程序获取的时间都是GMT时间,而系统是北京时间,应该是GMT+8,刚好相差8小时。网上搜了好多资料,只有两种方法:
1、在程序中使用java的函数设定时区。
2、在启动java程序时加参数-Duser.timezone=GMT+8

不过总不能去修改每个程序的源码去设定时区吧。也不想在每个java程序启动的时候加参数,太麻烦了。就没有一劳永逸的办法了?

开始以为jre应该会有某个配置文件保存了时区的配置,结果一无所获。不过总有jre总要去系统中获取时区配置吧。于是开始想是不是java用的是linux中的系统配置文件?于是到linux系统下/etc/sysconfig目录看时区配置。发现缺少了clock这个用于设置时区的文件。把别的linux系统中的这个文件拷过来一试,ok。java程序的时间和系统时间一致了。看来jre是从/etc/sysconfig/clock这个文件中获取时区信息的。

附clock文件内容:

ZONE="Asia/Shanghai"
UTC=false
ARC=false

ZONE -- 时区
UTC -- 表明时钟设置为UTC。
ARC -- 仅用于alpha表明使用ARC。


 

 新版本已经支持在页面配置了,dashboard->用户列表->admin->设置->用户自定义时区

 

 

 出处:https://segmentfault.com/q/1010000000749249

=======================================================================================

Jenkins时区配置及定时构建

在使用Jenkins的时候如果没有配置时区,默认使用的是UTC时间,这样任务构建显示的时间点和定时构建配置的时间点就不会按北京时间去触发,如果用UTC去配置定时构建也麻烦,最好从根本上把Jenkins的时区配置成北京时间,本文介绍下Jenkins容器的时区配置及Jenkins定时构建的配置方式。

一、控制台修改时区配置

1)脚本执行命令配置时区

在Dashboard->Manage Jenkins->Script Console,里面执行以下的命令

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')

在这条命令执行完之后,可以在Dashboard->Manage Jenkins->System Information里面看到生效的配置信息,之后可以看到历史构建记录的时间戳显示的是北京时间,但是这种配置方式有一个问题,构建触发器的Build Periodically定时构建使用的还是UTC的时间,并不是北京时间,而且在Jenkins服务重启之后这个配置就失效了。

Jenkins脚本配置系统时区

执行这个脚本之后,用户时区显示的还是UTC的时间。

Jenkins系统信息用户时区

2)修改用户定义时区

入口在用户->设置->用户定义的时区,这个是Jenkins官网介绍的方法,但是我这边配置之后还是无效。

二、修改Jenkins容器时区

这边是用Docker运行Jenkins,先查看运行的容器名,docker ps之后查看最后一栏的信息,这边是jenkins。

xxx-dell720:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
8c2dc86edb36        jenkins/jenkins     "/sbin/tini -- /usr/…"   3 weeks ago         Up 3 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins

先查看服务器localtime本地时区的参数是不是北京时区,如果不是,则cat之后输出的是UTC信息,这个时候只要把/usr/share/zoneinfo/Asia/Shanghai时区配置拷贝到/etc/localtime就行了如果是北京时区则输出的信息和Shanghai时区的配置是一样的。

xxx-dell720:~$ cat /etc/localtime
Etc/UTC
xxx-dell720:~$ cat /usr/share/zoneinfo/Asia/Shanghai

接着拷贝服务器的本地时区配置到Jenkins容器,执行以下命令:

docker cp /etc/localtime jenkins:/etc/

接着进入容器看下,执行以下命令进入容器:

docker exec -it jenkins bash

用date命令查看当前配置的时区参数,在没配置之前显示的是UTC的时间,配置完之后输出CST的时间就是北京时区的时间。

root@8c2dc86edb36:/# date
Fri Jan  8 07:49:23 UTC 2021

root@8c2dc86edb36:/# date
Fri Jan  8 16:13:13 CST 2021

接着可以重启下jenkins确认配置是否会失效,用以下命令重启:

docker restart jenkins

三、Jenkins定时构建配置

入口在设置->构建触发器模块。

Jenkins定时构建

定时构建配置规则如下,*号等同于H,表示任意一个合理的数。

 ┌───────────── 分钟 (0 - 59)
 │ ┌───────────── 小时 (0 - 23)
 │ │ ┌───────────── 一个月的第几天 (1 - 31)
 │ │ │ ┌───────────── 月 (1 - 12)
 │ │ │ │ ┌───────────── 一周的第几天 (0 - 6) (周日到周六,在一些系统上7也表示周日)
 │ │ │ │ │
 │ │ │ │ │
 *  *  *  *  *

规则:

指定时间范围:A-B,例如:3-5

指定时间间隔:/,例如:H/6

指定变量取值:A,B,C,例如:5,6,7   注意这边逗号是英文字符

示例:

1)每个小时都构建:H * * * *

2)每20分钟构建一次:H/20 * * * *

3)从早上5点到晚上11点,每20分钟构建一次:H/20 5-23 * * *

4)工作日周一到周五,早8点到下午6点,每20分钟构建一次:H/20 8-18 * * 1-5

5)周一到周三还有周五,每个小时构建一次:H * * * 1-3,5

6)在7月4号早上8:30构建一次:30 8 4 7 *

7)在每天早上5点、6点、7点、8点开始,每隔6分钟构建一次:H/6 5,6,7,8 * * *

 

扩展阅读:

Jenkins API使用

 

转载请注明出处:陈文管的博客 – Jenkins时区配置及定时构建

 

 

出处:https://www.chenwenguan.com/jenkins-timezone-setting-and-build-periodically/

=======================================================================================

=======================================================================================

posted on 2022-05-17 10:43  jack_Meng  阅读(2709)  评论(0编辑  收藏  举报

导航