Jenkins CIがDebian squeezeでUTCではなくローカル時間を使用する方法


14

私は、DebianスクイーズにJenkins-ciをインストールしています。

現在のデフォルトのタイムゾーン:「アメリカ/トロント」
現地時間は現在:2012年7月9日月曜日16:00:57 EDT。
世界時は現在:2012年7月9日20:00:57 UTCです。

/ etc / default / rcSファイルには次のものがあります。

UTC =いいえ

残念ながら、これは機能していません、ジェンキンスのシステム情報では:

user.timezone Etc / UTC

私は数時間検索しました。残念ながら、修正を見つけることができませんでした。

お時間をありがとう


1
6.5年後、表示したいタイムゾーンを設定するためにユーザープロファイルを設定できません。
mkaatman

回答:


16

Jenkinsを起動するときに、JVM引数として必要なuser.timezoneの値を渡す必要があります。Javaコマンドラインは次のようになります。

$JAVA_HOME/java -Duser.timezone="America/Toronto" [other JVM parameters] $JENKINS_HOME/jenkins.jar

残念ながら、Debianのインストールには慣れていませんが、JVMパラメーターは/etc/init.d/jenkinsスクリプトまたはそのスクリプトから参照されるプロパティファイルで定義する必要があります。


完璧に機能してくれてありがとう。
-drgn

1
追加する必要があります、ジェンキンスは過去にタイムトラベルするのが好きではありません:最終成功:-322ミリ秒(#30)
drgn


1
" - Duser.timezone =アメリカ/ニューヨーク" JENKINS_JAVA_OPTIONS =:CentOSの/ RHELには、/ etc / sysconfig /ジェンキンスで設定することができます
nandoP

1
Debianがタイムゾーンを適切に設定したとは信じていません/etc/init.d/rc.local。おそらく、Jenkinsを起動するためのSysv initスクリプトがあれば、うまくいくでしょう。JenkinsのWebサイトにはいくつかの例があります。UTC=no中には、/etc/default/rcSお使いのマシン上のタイムゾーンとは何の関係もありません。これは、ハードウェアクロックに保存されている時間が現地時間かUTC時間かを示しています。時間の調整についてntpは、クライアントとしてのNTPデーモンまたはその他のNTPデーモンを使用します。これは、タイムトラベルなしで時間をゆっくり調整するためです。
アンデルス

9

3年後、これを機能させるためのいくつかの落とし穴が見つかりました。そこで、受け入れられた回答(これは正しい)について詳しく説明し、CentOSの完全な回答を追加します。


落とし穴#1:変更するJenkinsの設定

現在ジェンキンスのタイムゾーンの変更のドキュメントが定義するために言いますuser.timezone org.apache.commons.jelly.tags.fmt.timeZone。しかし、両方が必要であることがわかりました。ゼリーの1つはJenkinsの適切なプラグインといくつかのプラグインで機能し、ユーザーの1つは他のプラグインで機能します。


落とし穴#2:更新するOS設定

米国東部の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ません。


落とし穴#3:再起動

サービス全体をコマンドラインから再起動する必要があります。Jenkinsの安全な再起動を行うだけで不十分です。そう:

sudo service jenkins restart

これをすべて完了したら、Jenkinsシステム情報パネルで両方のタイムゾーン設定が一致することを確認します。http://jenkins.example.com/systemInfo


1
これは、CentOSの下のdockerコンテナでjenkinsを実行するときに役立ちましたが、/ etc / sysconfig / jenkinsでオプションが設定されていません。オプションは、docker runコマンドのdocker変数で渡され、jenkins startコマンドに渡されました。
gaoithe

7

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」プロパティで、「Asia / Kolkata」という値が表示されます。


2

Apache TomcatでJenkinsを実行している場合、これらを<Apache-Tomcat-Dir> /conf/catalina.propertiesに追加します。

user.timezone=America/New_York
org.apache.commons.jelly.tags.fmt.timeZone=America/New_York

両方が必要です。


2

これがcronスケジュールに基づくジョブの実行に関連する場合(つまり、定期的にビルドする場合)、ジョブごとにcronスケジュールでタイムゾーンを設定できます。

TZ=Europe/Dublin
0 7 * * 1-5

0

CentOS 7.1上のjenkins v2.73.3(ドッカー内)の場合、両方の必要があることがわかりました

1. OSのタイムゾーンを設定します(例: 'ln -sf / usr / share / zoneinfo / Asia / Jakarta / etc / localtime'および

2. Jenkinsの管理の下で、タイムゾーンを設定します(例:「アジア/ジャカルタ」)。

通常のjenkins:xxxx / restartの後、新しいタイムゾーンが使用されます。


0

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にリンクするスクリプトを作成できますが、重要なことは、これら2つの引数をJAVA_OPTSに渡すことです: 「-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ」。jenkins.shスクリプトはこれらをコマンドラインに渡し、jenkinsプロセスを開始します。

docker runコマンドのコンテナー例を作成するときのdockerホスト:

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コマンドに渡されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.