Answers:
启动Jenkins时,您需要将所需的user.timezone值作为JVM参数传递。Java命令行如下所示:
$JAVA_HOME/java -Duser.timezone="America/Toronto" [other JVM parameters] $JENKINS_HOME/jenkins.jar
不幸的是,我不熟悉Debian的安装,但是JVM参数应该在/etc/init.d/jenkins脚本中定义,或者在该脚本引用的属性文件中定义。
/etc/init.d/rc.local
。您可能已经有一个Sysv初始化脚本来启动Jenkins,这可能对您有用。Jenkins网站上有一些示例。该UTC=no
中/etc/default/rcS
没有任何与你的机器上的时区。它告诉存储在硬件时钟中的时间是本地时间还是UTC时间。关于调整时间,请使用ntp
或任何其他NTP守护程序作为客户端,因为它会慢慢调整时间而无需花费时间。
三年后,我发现有一些问题需要解决。因此,我将详细说明可接受的答案(正确),并为CentOS添加完整的答案。
詹金斯(Jenkins)当前有关更改时区的文档说定义user.timezone
或 org.apache.commons.jelly.tags.fmt.timeZone
。但是,我发现两者都是必要的。果冻一个作品詹金斯适当和一些插件,在用户一个适用于其他插件。
对于美国东部的CentOS,编辑/etc/sysconfig/jenkins
为:
JENKINS_JAVA_OPTIONS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York -Duser.timezone=America/New_York"
JENKINS_ARGS=""
如果将这些-D
设置放入JENKINS_ARGS
,它将无法正常工作。
您必须从命令行重新启动整个服务。简单地做一个詹金斯安全重启不充分。所以:
sudo service jenkins restart
完成所有这些操作后,请在Jenkins系统信息面板中检查两个时区设置是否匹配:http : //jenkins.example.com/systemInfo
在Ubuntu 14.04中,以上解决方案均不适用于我,但是我最终运行了以下命令,该命令可拉出一个界面,在该界面中,时区可以从默认值(未选择)更改为更具体的内容:
sudo dpkg-reconfigure tzdata
首先,系统提示您选择大陆(例如,美洲,亚洲等),然后选择城市,在我的案例中,印度的IST时区为“亚洲/加尔各答”。
请参见UbuntuTime-使用命令行。
另外,更改时区后,我重新启动了Jenkins:
sudo /etc/init.d/jenkins stop
sudo /etc/init.d/jenkins start
然后验证时间是否在当地IST时间内。在http://<yourservername>/systemInfo
bishop用户提供的中,在“系统属性”部分下的“ user.timezone”属性中,我现在看到“亚洲/加尔各答”为其值。
添加一个答案以涵盖在CentOS下在Docker容器中运行jenkins时的情况。在这种情况下,可能不会在/ etc / sysconfig / jenkins中设置选项(取决于您的jenkins服务启动脚本)。jenkins.sh脚本用于启动jenkins服务。此jenkins.sh脚本与jenkins-inside-docker项目使用的脚本相似,因此该答案对派生自此的docker项目中的任何jenkins很有用。
https://github.com/jenkinsci/docker/blob/master/jenkins.sh
在下面,我们得到TZ,例如Europe / Dublin,然后将-e $ TZ传递给docker run,以便我们可以拥有一个脚本,该脚本将其写入/ etc / timezone或链接/ etc / localtime,但重要的是在JAVA_OPTS中传递这两个参数: “ -Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ”。jenkins.sh脚本将它们传递给命令行,以启动jenkins进程。
在Docker主机上创建docker run命令的容器示例时:
TZFILE=$(readlink -f /etc/localtime)
TZ=$(echo $TZFILE|sed s#.*zoneinfo\/##)
TZARG=" -e $TZ "
ID=$(docker run $TARG \
-d \
--user=jenkins \
--name jenkins-${USER} \
--restart always \
-p $HOST_IP:$JENKINS_PORT:${JENKINS_PORT_INTERNAL} \
-p $HOST_IP:$JENKINS_SLAVE_PORT:50000 \
$TZARG \
--env JAVA_OPTS="-Dhudson.Main.development=true \
-Dhudson.footerURL=$JENKINS_URL \
-Dorg.apache.commons.jelly.tags.fmt.timeZone=$TZ -Duser.timezone=$TZ \
-Xms800M -Xmx800M -Xmn400M \
" \
--env JENKINS_HOME=/var/jenkins_home \
-v $JENKINS_DIR:/var/jenkins_home \
$VARGS \
$ADDITIONALARGS \
$IMAGE \
/bin/tini /usr/local/bin/jenkins.sh \
)
echo "INFO: container ID:$ID" |tee JENKINS.CONTAINER.ID
选项在docker run命令中的docker变量中传递,然后传递给jenkins start命令。