Дженкинс показывает неправильное время? - PullRequest
14 голосов
/ 08 января 2012

Я запускаю 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 показывает правильное местное время. Пример: Вс 8 января 12:11:35 CET 2012 Но Дженкинс показывает время плюс 1 час: (...

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

Я думаю, что Дженкинс (Java) считает, что местное время установлено на UTC, так что добавляется 1 час.

Как мне решить эту проблему?

Ответы [ 6 ]

19 голосов
/ 28 августа 2015

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

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

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

13 голосов
/ 16 марта 2013

См. Здесь: https://wiki.jenkins -ci.org / display / JENKINS / Изменить + часовой пояс + 1003 *

Короче говоря, вы можете установить системное свойство, либо изменив параметры 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 (уровень представления) непосредственно перед отображением (... если даже тогда). (Результаты нашей системы сборки фактически дают данные, которые передаются в другую систему в другом часовом поясе.)

1 голос
/ 24 сентября 2017

Поместите это в Dockerfile, и оно будет работать;

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')

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

0 голосов
/ 07 января 2019

Если у вас есть дополнительные ведомые, вы можете синхронизировать часы, используя ntp . В Linux вы можете запустить следующие команды для каждого ведомого:

sudo systemctl stop ntp
sudo ntpdate -qu 0.debian.pool.ntp.org
sudo systemctl restart ntp
sudo systemctl status ntp
0 голосов
/ 05 октября 2018

Для официального образа Jenkins Docker (lts: 2.138.1) вы должны установить параметры Jenkins java для своего местного TZ. Вы можете использовать этот env. переменная в команде запуска docker или docker-compose.

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

JENKINS_JAVA_OPTIONS="-Duser.timezone=Europe/Paris" 
0 голосов
/ 17 июня 2017

На 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...