2012-01-08 142 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') 

設置時區。