ホームページ  >  に質問  >  本文

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日前1735

全員に返信(5)返信します

  • 天蓬老师

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

    この問題は解決されていません。ただし、スクリプトで北京時間を使用する必要があるため、TZ='PRC' date コマンドを使用して変数表示に保存し、この問題を回避するだけでした。

    返事
    0
  • 高洛峰

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

    二階で冷静なふりをしないでください、これは本当に未解決で、誤解を招くところでした。
    根本的な理由は、Jenkins が jvm 時間を使用するため、後で変更されるシステム時間とは依然として異なるためです。次の手順に従ってください。解決しましたよ。

    Linux での jvm タイムゾーン設定
    jre の合理化された Linux インストールでは、すべての Java プログラムによって取得される時間がシステム時間ではないことがわかりました。後でタイムゾーンが間違っていたことが分かりました。 Java プログラムによって取得される時刻はすべて GMT 時間ですが、システムは北京時間であり、GMT+8 である必要があり、ちょうど 8 時間違います。オンラインで多くの情報を検索した結果、方法は 2 つしかありません:
    1. Java 関数を使用してプログラムにタイムゾーンを設定します。
    2. Java プログラムの起動時にパラメーター -Duser.timezone=GMT+8 を追加します

    ただし、各プログラムのソースコードを変更してタイムゾーンを設定することはできません。 Javaプログラムを起動するたびにパラメータを追加するのは面倒なのでやりたくないです。恒久的な解決策はないのでしょうか?

    最初は、jre にはタイムゾーン設定を保存する設定ファイルがあるはずだと思いましたが、何も見つかりませんでした。ただし、jre は常にシステムにアクセスしてタイムゾーン構成を取得する必要があります。そこで、Java は Linux でシステム構成ファイルを使用するのではないかと疑問に思い始めました。したがって、Linux システムの /etc/sysconfig ディレクトリに移動して、タイムゾーンの設定を確認します。タイムゾーンの設定に使用されるクロックファイルが見つからないことが判明しました。このファイルを別の Linux システムからコピーして試してみてください。 Java プログラムの時間はシステム時間と一致します。 jre は /etc/sysconfig/lock ファイルからタイムゾーン情報を取得しているようです。

    時計ファイルの内容を添付します:

    ZONE="アジア/上海"
    UTC=false
    ARC=偽

    ZONE -- タイムゾーン
    UTC -- 時計が UTC に設定されていることを示します。
    ARC -- アルファは 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現地時間
    3.現地時間 -> /usr/share/zoneinfo/アジア/上海
    4. ページ http://jenkins-server:8080/restart

    で jenkins サーバーを再起動します。

    返事
    0
  • 伊谢尔伦

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

    私は、Jenkins deb パッケージを通じてインストールされた Ubuntu 12.04 を使用しています。

    変更方法は以下の通りです

    リーリー

    リーリー

    Googleがブロックされてから、人々は公式文書や公式Wikiをほとんど読まなくなりました

    返事
    0
  • キャンセル返事