Ich habe eine Jenkins-ci-Installation auf einem Debian Squeeze.
Aktuelle Standardzeitzone: 'Amerika / Toronto' Ortszeit ist jetzt: Mo 09 Jul 16:00:57 EDT 2012. Weltzeit ist jetzt: Mo 9. Juli 20:00:57 UTC 2012.
In der / etc / default / rcS-Datei habe ich:
UTC = nein
Leider funktioniert dies nicht. In den Systeminformationen von jenkins:
user.timezone Etc / UTC
Ich suchte für ein paar Stunden .. konnte leider keine Lösung finden, eine Hilfe wäre sehr dankbar.
Vielen Dank für Ihre Zeit
Antworten:
Sie müssen den erforderlichen Wert von user.timezone als JVM-Argument übergeben, wenn Sie Jenkins starten. Die Java-Befehlszeile sieht ungefähr so aus:
Leider bin ich mit der Debian-Installation nicht vertraut, aber die JVM-Parameter sollten entweder im Skript /etc/init.d/jenkins oder in einer Eigenschaftendatei definiert werden, auf die von diesem Skript aus verwiesen wird.
quelle
/etc/init.d/rc.local
. Hätte wohl geklappt, wenn du ein Sysv-Init-Skript zum Starten von Jenkins hattest. Es gibt einige Beispiele auf der Jenkins-Website. DerUTC=no
in/etc/default/rcS
hat nichts mit Zeitzone auf Ihrem Computer zu tun. Es ist aussagekräftig, ob die in der Hardware-Uhr gespeicherte Zeit die Ortszeit oder die UTC-Zeit ist. Über das Einstellen der Zeit, verwenden Sientp
oder einen anderen NTP-Daemon als Client, da er die Zeit ohne Zeitreise langsam anpassen wird.Drei Jahre später fand ich mehrere Fallstricke, die das zum Laufen brachten. Daher werde ich die akzeptierte Antwort (die korrekt ist) näher erläutern und eine vollständige Antwort für CentOS hinzufügen.
Gotcha # 1: Die zu ändernden Jenkins-Einstellungen
In der aktuellen Jenkins- Dokumentation zum Ändern der Zeitzone heißt es,
user.timezone
oder zu definierenorg.apache.commons.jelly.tags.fmt.timeZone
. Aber ich habe festgestellt, dass beide notwendig sind. Das Gelee funktioniert für Jenkins und einige Plugins, während der Benutzer für andere Plugins arbeitet.Gotcha # 2: Die zu aktualisierenden Betriebssystemeinstellungen
Bearbeiten Sie CentOS in den östlichen USA wie folgt
/etc/sysconfig/jenkins
:Wenn Sie diese
-D
Einstellungen vornehmenJENKINS_ARGS
, funktioniert es nicht.Gotcha # 3: Neustart
Sie müssen den gesamten Dienst über die Befehlszeile neu starten. Ein sicherer Neustart von Jenkins ist nicht ausreichend. So:
Wenn Sie dies alles getan haben, überprüfen Sie, ob beide Zeitzoneneinstellungen in Ihrem Jenkins-Systeminformationsfenster übereinstimmen: http://jenkins.example.com/systemInfo
quelle
In Ubuntu 14.04 hat keine der oben genannten Lösungen für mich funktioniert, aber ich habe den folgenden Befehl ausgeführt, der eine Schnittstelle aufruft, in der die Zeitzone von der Standardeinstellung (keine ausgewählt) in eine spezifischere geändert werden kann:
sudo dpkg-reconfigure tzdata
Zuerst werden Sie aufgefordert, den Kontinent (dh Amerika, Asien usw.) und dann die Stadt auszuwählen, was in meinem Fall zu "Asia / Kolkata" für die IST-Zeitzone in Indien führte.
Siehe UbuntuTime - Verwenden der Befehlszeile .
Außerdem habe ich nach dem Ändern der Zeitzone Jenkins neu gestartet:
sudo /etc/init.d/jenkins stop sudo /etc/init.d/jenkins start
und überprüfte dann, ob die Zeit in lokaler IST-Zeit war. In
http://<yourservername>/systemInfo
, wie vom Benutzer bishop im Abschnitt Systemeigenschaften für die Eigenschaft "user.timezone" angegeben, wird jetzt "Asia / Kolkata" als Wert angezeigt.quelle
Wenn Sie Jenkins in Apache Tomcat ausführen, fügen Sie diese zu <Apache-Tomcat-Dir> /conf/catalina.properties hinzu:
Beides wird benötigt.
quelle
Wenn sich dies auf die Ausführung von Jobs bezieht, die auf einem Cron-Zeitplan basieren (z. B. "Periodisch erstellen"), können Sie Ihre Zeitzone im Cron-Zeitplan auf Jobbasis festlegen:
quelle
Für jenkins v2.73.3 unter CentOS 7.1 (im Docker) haben wir festgestellt, dass Sie beides haben müssen
1. Stellen Sie die Zeitzone des Betriebssystems ein, z. B. 'ln -sf / usr / share / zoneinfo / Asia / Jakarta / etc / localtime' und
2. Stellen Sie unter Jenkins verwalten die Zeitzone ein, z. B. 'Asien / Jakarta'.
Nach einem normalen jenkins: xxxx / restart wird die neue Zeitzone verwendet.
quelle
Hinzufügen einer Antwort, um die Situation beim Ausführen von Jenkins in einem Docker-Container unter CentOS abzudecken . In diesem Fall werden die Optionen möglicherweise nicht in / etc / sysconfig / jenkins festgelegt (abhängig von den Startskripten Ihres jenkins-Dienstes). Ein jenkins.sh-Skript wird verwendet, um den jenkins-Dienst zu starten. Dieses jenkins.sh-Skript ähnelt dem, das vom jenkins-inside-docker-Projekt verwendet wird, sodass diese Antwort hoffentlich für alle Jenkins in Docker-Projekten nützlich ist, die davon abgeleitet sind.
https://github.com/jenkinsci/docker/blob/master/jenkins.sh
Unten sehen wir TZ zB Europe / Dublin und übergeben -e $ TZ an docker, damit wir ein Skript haben, das das in / etc / timezone oder links / etc / localtime schreibt, aber das Wichtige ist, diese beiden Argumente in JAVA_OPTS zu übergeben: "-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ". Das Skript jenkins.sh übergibt diese an die Befehlszeile, die den jenkins-Prozess startet.
Auf dem Docker-Host beim Erstellen des Container-Beispiels für den Docker-Ausführungsbefehl:
Optionen wurden in der Docker-Variablen im Docker-Befehl run übergeben und dann an den Befehl jenkins start übergeben.
quelle