How to make Jenkins CI use Local time instead of UTC on debian squeeze
Solution 1:
You need to pass in your required value of user.timezone as a JVM argument when you start Jenkins. The Java command line will look something like:
$JAVA_HOME/java -Duser.timezone="America/Toronto" [other JVM parameters] $JENKINS_HOME/jenkins.jar
Unfortunately I'm not familiar with the Debian installation, but the JVM parameters should either be defined in the /etc/init.d/jenkins script or in a properties file that is referenced from that script.
Solution 2:
Three years later, I found several gotchas getting this to work. So, I'll elaborate upon the accepted answer (which is correct) and add a complete answer for CentOS.
Gotcha #1: The Jenkins settings to change
The current Jenkins documentation on changing time zone says to define user.timezone
or org.apache.commons.jelly.tags.fmt.timeZone
. But, I have found that both are necessary. The jelly one works for Jenkins proper and some plugins, while the user one works for other plugins.
Gotcha #2: The OS settings to update
For CentOS in the Eastern US, edit /etc/sysconfig/jenkins
to:
JENKINS_JAVA_OPTIONS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York -Duser.timezone=America/New_York"
JENKINS_ARGS=""
If you put these -D
settings into JENKINS_ARGS
, it won't work.
Gotcha #3: Restarting
You have to restart from the command line, the entire service. Simply doing a Jenkins safe restart is not sufficient. So:
sudo service jenkins restart
When you've done all this, check that both time zone settings match in your Jenkins system information panel: http://jenkins.example.com/systemInfo