Дженкинс показывает неправильное время?

Я запускаю Jenkins на сервере Linux и показывает неправильное время: (

Ситуация: Я запускаю другое приложение java (в tomcat, которое также запускает Jenkins), которое показывает правильное время в файлах журнала (я использую Logback через slf4j). Bios установлен на время UTC (системные часы), как советует здесь: http://www.linuxsa.org.au/tips/time.html

В Linux он указывал в /etc/sysconfig/clock, что системные часы установлены на UTC и в какой часовой зоне мы находимся. Я в UTC + 1

Команда текущей даты в Linux показывает правильное местное время. Пример:  Sun Jan 8 12:11:35 CET 2012 Но Дженкинс показывает время плюс 1 час: (...

Конфигурация jenkins показывает:  user.timezone = Европа/Амстердам (это UTC + 1).

Я думаю, что Jenkins (java) считает, что локальные часы установлены на UTC, так что добавляется 1 час.

Как это решить?

Ответы

Ответ 1

Смотрите здесь: https://wiki.jenkins-ci.org/display/JENKINS/Change+time+zone

Короче говоря, вы можете установить системное свойство, изменив параметры JVM,

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

Или изменение конфигурации Jenkins в /etc/default/jenkins (Debian) или /etc/sysconfig/jenkins (Red Hat):

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

Он также упомянул, что -Duser.timezone="..." является опцией, но может вызвать проблемы/вмешиваться в другие контексты (некоторые расплывчатые размахивание и оговорки: путешествие во времени всегда непредсказуемо).

В целом (по моему опыту) не изменяйте системное время, так как мы, наши серверы и наши данные живут в глобальном мире и должны обрабатывать, отправлять, сравнивать все время в UTC до самого последнего возможного момента: обычно, что GUI (уровень представления) непосредственно перед отображением (... если даже тогда). (Наши результаты системы сборки фактически дают данные, которые поступают в другую систему в другой часовой пояс.)

Ответ 2

Если вы используете Jenkins с Docker, вы можете добавить -e JAVA_OPTS=-Duser.timezone=TZ к аргументам докеров.

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

Все доступные TZ можно найти здесь.

Ответ 3

Поместите это в файл Docker, и он будет работать;

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 будет запущен при запуске.

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

Это устанавливает часовой пояс.

Ответ 4

В Jenkins 2.63 на Ubuntu 14.04.5 Настройка LTS

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

в /etc/default/jenkins, а затем выполните

sudo service jenkins stop
sudo service jenkins start

работал у меня, чтобы изменить часовой пояс с UTC на PDT.