首頁  >  問答  >  主體

docker - jenkins的时区设置问题

在jenkins中配置的任务,从任务log看,发现时间都是按照格林威治时间显示的,jenkins的系统管理中的“系统信息”里,user.timezone也是Etc/UTC。

我的这个jenkins环境是这样的:jenkins server运行在docker container中,host是ubuntu14.04,container使用的镜像也是基于ubuntu14.04的。最初,host和container的时间也是格林威治时间,我通过"sudo cp /usr/share/zoneinfo/PRC /etc/localtime"重新配置了系统的时区,host和container的时间显示就为北京时间了。但是jenkins server里显示的时间依然是格林威治时间,即使是我将container删掉,重新创建,也还是这样。

不知如何才能将jenkins中的时间调整为北京时间?谢谢。

PHPzPHPz2710 天前1733

全部回覆(5)我來回復

  • 天蓬老师

    天蓬老师2017-04-21 10:59:47

    這個問題一直沒解決。不過因為我是在腳本裡需要使用北京時間,因此用了TZ='PRC' date指令來儲存到變數顯示,只做到了規避這個問題。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-21 10:59:47

    樓上別裝逼,坑啊,我還以為真的是一直沒解決,差點誤導我。
    根本原因是jenkins用的是jvm的時間,所以會導致跟後面修改的系統時間,還是不一樣,照下面的做法就可以了。我已經解決了。

    Linux下jvm時區設定
    在一個精簡的Linux安裝上jre,發現所有的java程式取得的時間都不是系統時間。後來發現原來是時區不對。 java程式取得的時間都是GMT時間,而係統是北京時間,應該是GMT+8,剛好相差8小時。網路上搜了很多資料,只有兩種方法:
    1.在程式中使用java的函數設定時區。
    2.在啟動java程式時加參數-Duser.timezone=GMT+8

    不過總不能去修改每個程式的源碼去設定時區吧。也不想在每個java程式啟動的時候加參數,太麻煩了。就沒有一勞永逸的辦法了?

    開始以為jre應該會有某個設定檔保存了時區的配置,結果一無所獲。不過總有jre總要去系統中取得時區配置吧。於是開始想是不是java用的是linux中的系統設定檔?於是到linux系統下/etc/sysconfig目錄看時區設定。發現缺少了clock這個用於設定時區的檔案。把別的linux系統中的這個文件拷過來一試,ok。 java程式的時間和系統時間一致了。看來jre是從/etc/sysconfig/clock這個檔案中取得時區資訊的。

    附clock文件內容:

    ZONE="Asia/Shanghai"
    UTC=false
    ARC=false

    ZONE -- 時區
    UTC -- 表示時鐘設定為UTC。
    ARC -- 僅用於alpha表明使用ARC。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-21 10:59:47

    雷雷

    https://github.com/jenkinsci/docker/issues/45

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-21 10:59:47

    提交另外一種方法,
    1.cd /etc
    2.rm localtime
    3.localtime -> /usr/share/zoneinfo/Asia/Shanghai
    4.頁面重啟jenkins server,http://jenkins-server:8080/restart

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 10:59:47

    我是ubuntu 12.04,透過jenkins deb套件安裝的。

    修改方法如下:

    sudo sed -i -r 's#JAVA_ARGS="(.*)"#JAVA_ARGS="-Duser.timezone=Asia/Shanghai "#g' /etc/default/jenkins
    sudo service jenkins restart

    or

    sudo sed -i -r 's#JAVA_ARGS="(.*)"#JAVA_ARGS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai "#g' /etc/default/jenkins
    sudo service jenkins restart

    自從google被封,大家都很少看官方文件了,官方wiki

    回覆
    0
  • 取消回覆