Maison  >  Questions et réponses  >  le corps du texte

docker - jenkins的时区设置问题

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

PHPzPHPz2761 Il y a quelques jours1766

répondre à tous(5)je répondrai

  • 天蓬老师

    天蓬老师2017-04-21 10:59:47

    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.

    répondre
    0
  • 高洛峰

    高洛峰2017-04-21 10:59:47

    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.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-21 10:59:47

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

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

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-21 10:59:47

    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

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 10:59:47

    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

    répondre
    0
  • Annulerrépondre