docker - jenkins的时区设置问题
PHPz
PHPz 2017-04-21 10:57:47
0
5
1796

在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中的时间调整为北京时间?谢谢。

PHPz
PHPz

学习是最好的投资!

membalas semua(5)
Peter_Zhu

Masalah ini belum selesai. Walau bagaimanapun, kerana saya perlu menggunakan masa Beijing dalam skrip, saya menggunakan perintah TZ='PRC' date untuk menyimpannya ke paparan berubah-ubah, yang hanya memintas masalah ini.

小葫芦

Jangan berpura-pura baik di tingkat atas, ini satu penipuan, saya fikir ia benar-benar tidak dapat diselesaikan dan ia hampir mengelirukan saya.
Sebab asasnya ialah Jenkins menggunakan masa jvm, jadi ia akan tetap berbeza daripada masa sistem yang diubah suai kemudian. Saya telah menyelesaikannya.

Tetapan zon waktu JVM di bawah Linux
Pada pemasangan jre Linux yang diperkemas, saya mendapati bahawa masa yang diperolehi oleh semua program java bukanlah masa sistem. Kemudian saya mendapat tahu bahawa zon waktu adalah salah. Masa yang diperolehi oleh program java ialah semua masa GMT, dan sistem ialah waktu Beijing, yang sepatutnya GMT+8, iaitu betul-betul 8 jam berbeza. Selepas mencari banyak maklumat dalam talian, hanya terdapat dua kaedah:
1. Gunakan fungsi java untuk menetapkan zon waktu dalam program.
2. Tambahkan parameter -Duser.timezone=GMT+8

apabila memulakan program java

Tetapi anda tidak boleh mengubah suai kod sumber setiap program untuk menetapkan zon waktu. Saya tidak mahu menambah parameter apabila setiap program java bermula, ia terlalu menyusahkan. Adakah tiada penyelesaian kekal?

Saya pada mulanya menyangka bahawa jre akan mempunyai fail konfigurasi yang menyimpan konfigurasi zon waktu, tetapi tidak menemui apa-apa. Walau bagaimanapun, jre sentiasa perlu pergi ke sistem untuk mendapatkan konfigurasi zon waktu. Jadi saya mula tertanya-tanya sama ada Java menggunakan fail konfigurasi sistem di Linux? Jadi pergi ke direktori /etc/sysconfig di bawah sistem Linux untuk melihat konfigurasi zon waktu. Didapati bahawa fail jam yang digunakan untuk menetapkan zon waktu tiada. Salin fail ini daripada sistem Linux yang lain dan cuba, ok. Masa program java adalah konsisten dengan masa sistem. Nampaknya jre memperoleh maklumat zon waktu daripada fail /etc/sysconfig/clock.

Dilampirkan kandungan fail jam:

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

ZON -- Zon waktu
UTC -- Menunjukkan bahawa jam ditetapkan kepada UTC.
ARC -- alpha hanya menunjukkan penggunaan ARC.

Peter_Zhu
docker run ... -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai

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

巴扎黑

Serahkan kaedah lain,
1.cd /etc
2.rm waktu tempatan
3.localtime -> /usr/share/zoneinfo/Asia/Shanghai
4. Mulakan semula pelayan jenkins pada halaman, http://jenkins-server:8080/restart

伊谢尔伦

Saya menggunakan Ubuntu 12.04, dipasang melalui pakej deb Jenkins.

Kaedah pengubahsuaian adalah seperti berikut:

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

atau

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

Sejak Google disekat, orang jarang membaca dokumen rasmi, wiki rasmi

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan