2012-01-08 138 views
14

我在Linux服务器上运行詹金斯,并显示错误的时间:(Jenkins显示错误的时间?

情况: 我正在运行另一个Java应用程序(在Tomcat中也运行詹金斯),显示在日志文件中正确的时间(我用。通过SLF4J的logback) 将BIOS设置为UTC时间(系统时钟),如建议在这里:http://www.linuxsa.org.au/tips/time.html

在Linux中它在/ etc/SYSCONFIG /时钟,系统时钟设置为UTC,并在时区显示我位于UTC + 1

Linux上的运行日期命令显示正确的本地时间。 E: 太阳1月8日12时11分35秒CET 2012 但詹金斯显示的时间加1时:(...

詹金斯配置显示: user.timezone =欧洲/阿姆斯特丹(这是UTC + 1 )。

我认为詹金斯(爪哇)认为本地时钟设置为UTC,使1小时添加。

我该如何解决这个问题?

+0

这显然不是一个编程问题。您应该咨询serverfault.com – 2012-01-08 11:33:02

+0

但是为什么在Jenkins中不正确,但是在我自己的应用程序中呢? (都是Java应用程序的)。我已经三重检查了所有的linux时钟设置 – edbras 2012-01-08 11:37:35

+0

你有一个应用程序/管理问题不是一个编程问题。 – 2012-01-08 12:42:57

回答

13

在这里看到:https://wiki.jenkins-ci.org/display/JENKINS/Change+time+zone

总之,你可以设置系统属性,要么修改JVM选项,

java -Dorg.apache.commons.jelly.tags.fmt.timeZone=TZ ... 

或者在/ etc /默认/詹金斯改变詹金斯配置(Debian的)或的/ etc/SYSCONFIG /詹金斯(红帽):

JAVA_ARGS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York" 

它还提到-Duser.timezone="..."是一种选择,但可能会导致问题/与其它上下文干扰(S ome含糊手挥手&注意事项:时间旅行总是不可预知的)。

一般而言(在我的经验),不更改系统时间,因为我们,我们的服务器&我们的数据生活在一个全球化的世界&要处理,在UTC发送,比较所有时间,直到最新的一刻:通常就是在显示之前的GUI(表示层)(即使是那样)。 (我们的构建系统结果实际上产生的数据会导入到另一个时区的另一个系统中。)

+1

我们将user.timezone设置为正确的时区,但Jenkins仍在使用UTC。事实证明,主设置正确,但奴隶不是。奴隶如何被设置为正确的时区? – 2013-05-31 00:06:32

14

如果您使用Docker运行Jenkins,则可以将-e JAVA_OPTS=-Duser.timezone=TZ附加到docker参数。

docker run -e JAVA_OPTS=-Duser.timezone=$TZ jenkins 

所有可用TZ可以发现here

0

在在Ubuntu 14.04.5 LTS詹金斯2.63设置

JAVA_ARGS="-Djava.awt.headless=true -Duser.timezone=America/Los_Angeles" 
/etc/default/jenkins

,然后做

sudo service jenkins stop 
sudo service jenkins start 

为我工作的时区从UTC更改为PDT。

1

把它放在一个Dockerfile中,它会工作;

RUN echo "import hudson.model.*;" > 
/var/jenkins_home/init.groovy.d/timezone.groovy && \ 
echo "import jenkins.model.*;" >> 
/var/jenkins_home/init.groovy.d/timezone.groovy && \ 
echo "System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 
'America/Denver')" >> /var/jenkins_home/init.groovy.d/timezone.groovy 

$ JENKINS_HOME/init.groovy.d/*。groovy会在启动时执行。

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 
'America/Denver') 

设置时区。