6

Jenkins时区配置及定时构建

 3 years ago
source link: https://www.chenwenguan.com/jenkins-timezone-setting-and-build-periodically/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Jenkins时区配置及定时构建

2021年1月14日 | 最近更新于 上午1:47

在使用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时区配置及定时构建

扫码或搜索:文呓

微信公众号 扫一扫关注

Filed Under: 前端开发


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK