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

在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

学习是最好的投资!

répondre à tous(5)
Peter_Zhu

Ce problème n'a pas été résolu. Cependant, comme je dois utiliser l'heure de Pékin dans le script, j'utilise la commande TZ='PRC' date pour l'enregistrer dans un affichage variable, ce qui ne fait que contourner ce problème.

小葫芦

Ne faites pas semblant d'être cool en haut, c'est une arnaque. Je pensais que c'était vraiment non résolu et ça m'a presque induit en erreur.
La raison fondamentale est que Jenkins utilise l'heure jvm, elle sera donc toujours différente de l'heure système qui sera modifiée ultérieurement. Suivez simplement les étapes ci-dessous. Je l'ai résolu.

Paramètre du fuseau horaire JVM sous Linux
Sur une installation Linux simplifiée de jre, j'ai constaté que l'heure obtenue par tous les programmes Java n'était pas l'heure du système. Plus tard, j'ai découvert que le fuseau horaire n'était pas le bon. L'heure obtenue par le programme Java est entièrement l'heure GMT, et le système est l'heure de Pékin, qui devrait être GMT+8, ce qui est exactement 8 heures de différence. Après avoir recherché de nombreuses informations en ligne, il n'existe que deux méthodes :
1. Utilisez les fonctions Java pour définir le fuseau horaire dans le programme.
2. Ajoutez le paramètre -Duser.timezone=GMT+8

lors du démarrage du programme Java

Mais vous ne pouvez pas modifier le code source de chaque programme pour définir le fuseau horaire. Je ne veux pas ajouter de paramètres au démarrage de chaque programme Java, c'est trop gênant. N'y a-t-il pas de solution permanente ?

J'ai d'abord pensé que jre aurait un fichier de configuration qui enregistrait la configuration du fuseau horaire, mais je n'ai rien trouvé. Cependant, jre doit toujours se rendre dans le système pour obtenir la configuration du fuseau horaire. J'ai donc commencé à me demander si Java utilise le fichier de configuration système sous Linux ? Allez donc dans le répertoire /etc/sysconfig sous le système Linux pour voir la configuration du fuseau horaire. Il a été constaté que le fichier d'horloge utilisé pour définir le fuseau horaire est manquant. Copiez ce fichier depuis un autre système Linux et essayez-le, ok. L'heure du programme Java est cohérente avec l'heure du système. Il semble que jre obtienne les informations de fuseau horaire à partir du fichier /etc/sysconfig/clock.

Ci-joint le contenu du fichier horloge :

ZONE="Asie/Shanghai"
UTC=faux
ARC=faux

ZONE -- Fuseau horaire
UTC -- Indique que l'horloge est réglée sur UTC.
ARC -- alpha indique uniquement l'utilisation d'ARC.

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

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

巴扎黑

Soumettez une autre méthode,
1.cd /etc
2.rm heure locale
3.heure locale -> /usr/share/zoneinfo/Asia/Shanghai
4. Redémarrez le serveur jenkins sur la page, http://jenkins-server:8080/restart

伊谢尔伦

J'utilise Ubuntu 12.04, installé via le package deb Jenkins.

La méthode de modification est la suivante :

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

ou

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

Depuis que Google a été bloqué, les gens lisent rarement les documents officiels, wiki officiel

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal