web-dev-qa-db-ja.com

Jenkins CIにdebian squeezeでUTCではなく現地時間を使用さ​​せる方法

Debian squeezeにJenkins-ciインストールがあります。

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

/ etc/default/rcSファイルには、

 UTC =いいえ

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

 user.timezone Etc/UTC 

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

お時間をありがとう

15
drgn

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

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

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

16
gareth_bowles

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


問題点1:変更するJenkins設定

現在のジェンキンス タイムゾーンの変更に関するドキュメントuser.timezoneまたはorg.Apache.commons.jelly.tags.fmt.timeZone。しかし、私はbothが必要であることを発見しました。ゼリーの1つはJenkins本体とsomeプラグインで機能し、ユーザーの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、機能しません。


Gotcha#3:再起動

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

Sudo service jenkins restart

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

9
bishop

Ubuntu 14.04では、上記のソリューションはどれもうまくいきませんでしたが、次のコマンドを実行して、タイムゾーンをデフォルト(選択されていないもの)からより具体的なものに変更できるインターフェイスをプルアップしました。

Sudo dpkg-reconfigure tzdata

まず、大陸(つまり、アメリカ、アジアなど)を選択し、次に都市を選択するように求められます。私の場合は、インドのISTタイムゾーンの「アジア/コルカタ」が選択されています。

buntuTime-コマンドラインの使用 を参照してください。

さらに、タイムゾーンを変更した後、Jenkinsを再起動しました。

Sudo /etc/init.d/jenkins stop Sudo /etc/init.d/jenkins start

次に、時間がローカルIST時間であることを確認しました。 http://<yourservername>/systemInfo、ユーザーのビショップから提供されたシステムのプロパティセクションの「user.timezone」プロパティで、「Asia/Kolkata」の値が表示されます。

7
jmort253

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

TZ=Europe/Dublin
0 7 * * 1-5
2
Garreth McDaid

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
tarkeshwar

CentOS 7.1(docker内)上のjenkins v2.73.3の場合、両方を実行する必要があることがわかりました

1。OSタイムゾーンを設定例'ln -sf/usr/share/zoneinfo/Asia/Jakarta/etc/localtime'および

2。[Jenkinsの管理]でタイムゾーンを設定例「アジア/ジャカルタ」。

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

0
gaoithe

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

Docker runコマンドのコンテナーの例を作成するときのdocker Host:

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

0
gaoithe