在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中的时间调整为北京时间?谢谢。
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
apabila memulakan program javaPada 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
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.
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:
atau
Sejak Google disekat, orang jarang membaca dokumen rasmi, wiki rasmi