确保Jenkins时间为准确的中国时间的过程

确保Jenkins时间为准确的中国时间

我最近触发了一个Jenkins的定时任务,计划晚上9点开始,但是第二天发现实际上是早上5点自动触发的,后来查询了下是Jenkins的系统时间不对。下面是校准jenkins的系统时间的过程总结。

一、查看主机的当前系统时间

因为jenkins服务是安装在linux上的,首先确保linux主机的时间和日期设置是正确的,需要先查看下当前的时间和时区是什么

1.1 查询主机时间

qwqa@bbq:~$ date -R
Wed, 15 Apr 2020 08:06:24 +0000

1.2 查询主机的时区

查询一下,是否是正确的

qwqa@bbq:~$ date +"%Z %z"
UTC +0000

应该改成+8时区

二、设置正确时间和时区

2.1 安装ntp程序并校时

sudo apt install ntpdate

# 查询网络上可以用的同步IP地址
http://ntp.org.cn/pool.php

# 找个ip,校准时间
ntpdate 120.25.108.11

2.2.设置中国时区

我安装jenkins的系统是Ubuntu18.04

运行如下命令,依次傻瓜选择后定位到中国 
sudo tzselect
然后创建时区软链
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
现在时间已经设置为中国时间了

三. 将jenkins服务时间设置为本地时间

3.1 方法1 临时方法

进入系统管理–脚本命令行,在命令行中输入如下命令,点击运行,
可以设置为亚洲时间(这个是临时的)

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

这样设置完,可以立马看到web界面的右下角是正确的时间,但是重启jenkins服务后又是错误的时间了,因为jenkisn是读取/etc/timezone 这个文件确定系统时区的

3.2 方法2 永久方法

shell接入jenkins 安装的linux系统,做如下操作

先查看系统的时区,如果有问题,默认应该是UTC

qwqa@bbq:/# cat /etc/timezone 
Etc/UTC

#修改这个timezone文件为如下的内容,并保存
Asia/Shanghai

检查jenkins,确保已修改正确

命令查询一下,文件已经正确修改了

qwqa@bbq:~$ cat /etc/timezone
Asia/Shanghai

然后通过浏览器重启jenkins

http://IP:8080/restart

jenkins重启后,访问jenkins,可以看到右下角的显示时间是正确的,现在定时触发任务应该就不会出错了

2赞

@ yunpengb 分享的非常好,希望能有更多的案例能与各位分享交流。

给力,也可以再补充下容器中使用 Jenkins 时的时区设置。