2012-01-08 4 views
14

Sono in esecuzione Jenkins su un server Linux e mostra il momento sbagliato :(Jenkins mostra un orario sbagliato?

Situazione: Sono in esecuzione un'altra applicazione java (in Tomcat che gestisce anche Jenkins) che mostra l'ora esatta nei file di registro (io uso . logback attraverso slf4j) il BIOS sia impostato per l'ora UTC (orologio di sistema) come ti ricorda qui: http://www.linuxsa.org.au/tips/time.html

in Linux è indicato in/etc/sysconfig/orologio che l'orologio di sistema è impostato su UTC e in quale fuso orario Io sono in UTC + 1

Il comando data di esecuzione su Linux mostra l'ora locale corretta. e: Sun 8 gennaio 12:11:35 CET 2012 Ma Jenkins mostra il tempo più 1 ora: (...

La Jenkins config mostra: user.timezone = Europe/Amsterdam (che è GMT + 1).

Penso che Jenkins (java) pensi che l'orologio locale sia impostato su UTC in modo che venga aggiunta 1 ora.

Come posso risolvere questo?

+0

Questa ovviamente non è una domanda di programmazione. Dovresti consultare serverfault.com –

+0

Ma allora perché non è corretto in Jenkins, ma nella mia app? (entrambe le app di java). Ho già triplicato tutte le impostazioni dell'orologio linux – edbras

+0

Hai un problema di app/admin non un problema di programmazione. –

risposta

13

vedere qui: https://wiki.jenkins-ci.org/display/JENKINS/Change+time+zone

In breve, è possibile impostare la proprietà di sistema, sia la modifica delle opzioni JVM,

java -Dorg.apache.commons.jelly.tags.fmt.timeZone=TZ ... 

o modificare la configurazione Jenkins in/etc/default/Jenkins (Debian) o/etc/sysconfig/Jenkins (Red Hat):

JAVA_ARGS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York" 

Ha inoltre menzionato -Duser.timezone="..." è un'opzione, ma possono causare problemi/interferire con altri contesti (s alcuni vaghi sventagliamenti a mano &: il viaggio nel tempo è sempre imprevedibile).

In generale (nella mia esperienza), non cambiano l'ora del sistema, dal momento che noi, i nostri server & nostri dati vivono in un mondo globale & dovrebbe essere la manipolazione, l'invio, confrontando tutti i tempi in UTC fino a quando il più tardi possibile : di solito è la GUI (livello di presentazione) appena prima di essere visualizzata (... se anche allora). (I risultati del nostro sistema di compilazione producono dati immessi in un altro sistema in un altro fuso orario.)

+1

Abbiamo user.timezone impostato sul fuso orario corretto, ma Jenkins sta ancora utilizzando UTC. Si scopre che il master è impostato correttamente, ma gli schiavi non lo sono. Come possono gli schiavi essere impostati sul fuso orario corretto? –

14

Se Jenkins è in esecuzione con Docker, è possibile aggiungere gli argomenti del docker allo -e JAVA_OPTS=-Duser.timezone=TZ.

docker run -e JAVA_OPTS=-Duser.timezone=$TZ jenkins 

Tutto disponibile TZ può essere trovato here.

0

Su Jenkins 2.63 su Ubuntu 14.04.5 LTS impostazione

JAVA_ARGS="-Djava.awt.headless=true -Duser.timezone=America/Los_Angeles" 

in /etc/default/jenkins e poi facendo

sudo service jenkins stop 
sudo service jenkins start 

lavorato per me di cambiare il fuso orario da UTC a PDT.

1

Metti questo in un Dockerfile e funzionerà;

RUN echo "import hudson.model.*;" > 
/var/jenkins_home/init.groovy.d/timezone.groovy && \ 
echo "import jenkins.model.*;" >> 
/var/jenkins_home/init.groovy.d/timezone.groovy && \ 
echo "System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 
'America/Denver')" >> /var/jenkins_home/init.groovy.d/timezone.groovy 

$ JENKINS_HOME/init.groovy.d/*. Groovy otterrà eseguito all'avvio.

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 
'America/Denver') 

Imposta il fuso orario.