Как сделать Jenkins, Местное время использования CI вместо UTC на debian сжимает

Диспетчер задач по умолчанию никогда не показывает фактическое, полное использование памяти каждого процесса; но у Вас может быть он, показывают дополнительную информацию, которая намного более точна.

Посмотрите здесь:

http://windows.microsoft.com/en-US/windows7/What-do-the-Task-Manager-memory-columns-mean

14
задан 9 July 2012 в 23:42
7 ответов

При запуске Jenkins необходимо передать необходимое значение user.timezone в качестве аргумента JVM. Командная строка Java будет выглядеть примерно так:

$JAVA_HOME/java -Duser.timezone="America/Toronto" [other JVM parameters] $JENKINS_HOME/jenkins.jar

К сожалению, я не знаком с установкой Debian, но параметры JVM должны быть определены либо в сценарии /etc/init.d/jenkins, либо в файле свойств, на который имеется ссылка из этого сценария.

16
ответ дан 2 December 2019 в 21:00

Три года спустя я обнаружил несколько ошибок, заставляющих это работать. Итак, я уточню принятый ответ (который является правильным) и добавлю полный ответ для CentOS.


Попытка №1: изменить настройки Jenkins

Текущая документация Jenkins об изменении часового пояса говорит, что нужно определить user.timezone или org.apache.commons.jelly.tags.fmt.timeZone . Но я обнаружил, что оба необходимы. Один jelly работает с собственно Jenkins и некоторыми плагинами, а пользовательский работает с другими плагинами.


Попытка №2: Обновить настройки ОС

Для CentOS в восточной части США отредактируйте / etc / sysconfig / jenkins на:

JENKINS_JAVA_OPTIONS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York -Duser.timezone=America/New_York"
JENKINS_ARGS=""

Если вы поместите эти -D в JENKINS_ARGS , это не сработает.


Попытка № 3: Перезапуск

Вы должны перезапустить из командной строки всю службу. Просто выполнить безопасный перезапуск Jenkins недостаточно . Итак:

sudo service jenkins restart

Когда вы все это сделаете, убедитесь, что оба часовых поясов совпадают на панели информации вашей системы Jenkins: http://jenkins.example.com/systemInfo

9
ответ дан 2 December 2019 в 21:00

В Ubuntu 14.04 ни одно из вышеперечисленных решений не помогло мне, но в итоге я запустил следующая команда, которая вызывает интерфейс, в котором часовой пояс может быть изменен со значения по умолчанию (не выбран ни один) на более конкретный:

sudo dpkg-reconfigure tzdata

Сначала вам будет предложено выбрать континент (например, Америка, Азия и т. Д.), А затем город, что в моем случае привело к "Asia / Kolkata" для часового пояса IST в Индии.

См. UbuntuTime - Использование командной строки .

Кроме того, после изменения часового пояса я перезапустил Jenkins:

sudo /etc/init.d/jenkins stop sudo /etc/init.d/jenkins start

, а затем подтвердил, что время было по местному времени IST. В http: // / systemInfo , предоставленном пользователем bishop, в разделе «Свойства системы» для свойства «user.timezone» теперь я вижу его значение «Asia / Kolkata».

7
ответ дан 2 December 2019 в 21:00

Если вы используете Jenkins в Apache Tomcat, добавьте их в /conf/catalina.properties:

user.timezone=America/New_York
org.apache.commons.jelly.tags.fmt.timeZone=America/New_York

Оба нужны.

.
2
ответ дан 2 December 2019 в 21:00

Если это связано с выполнением заданий на основе расписания cron (т.е. периодической сборки), вы можете установить часовой пояс в расписании cron для каждого задания:

TZ=Europe/Dublin
0 7 * * 1-5
2
ответ дан 2 December 2019 в 21:00

Для jenkins v2.73.3 на CentOS 7.1 (в докере) мы обнаружили, что у вас есть оба

1. установите часовой пояс ОС , например 'ln -sf / usr / share / zoneinfo / Asia / Jakarta / etc / localtime' и

2. в разделе "Управление Дженкинсом" установите часовой пояс , например «Азия / Джакарта».

После обычного jenkins: xxxx / restart используется новый часовой пояс.

0
ответ дан 2 December 2019 в 21:00

Добавление ответа для покрытия ситуации, когда запускает jenkins в контейнере докеров под CentOS . В этом случае параметры могут быть не установлены в / etc / sysconfig / jenkins (в зависимости от сценариев запуска службы jenkins). Сценарий jenkins.sh используется для запуска службы jenkins. Этот сценарий jenkins.sh аналогичен сценарию, используемому в проекте jenkins-inside-docker, поэтому мы надеемся, что этот ответ будет полезен для любых jenkins в проектах docker, полученных из этого. /master/jenkins.sh

Ниже мы получаем TZ, например Europe / Dublin и передайте -e $ TZ в docker run, чтобы у нас был сценарий, который записывает это в / etc / timezone или связывает / etc / localtime, но важно передать эти два аргумента в JAVA_OPTS: "-Dorg.apache .commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ ". Сценарий jenkins.sh передает их в командную строку, которая запускает процесс jenkins.

На хосте докера при создании контейнера пример команды запуска докера:

TZFILE=$(readlink -f /etc/localtime)
TZ=$(echo $TZFILE|sed s#.*zoneinfo\/##)
TZARG=" -e $TZ "

ID=$(docker run $TARG \
-d \
--user=jenkins \
--name jenkins-${USER} \
--restart always \
-p $HOST_IP:$JENKINS_PORT:${JENKINS_PORT_INTERNAL} \
-p $HOST_IP:$JENKINS_SLAVE_PORT:50000 \
$TZARG \
--env JAVA_OPTS="-Dhudson.Main.development=true \
    -Dhudson.footerURL=$JENKINS_URL \
    -Dorg.apache.commons.jelly.tags.fmt.timeZone=$TZ -Duser.timezone=$TZ \
    -Xms800M -Xmx800M -Xmn400M \
    " \
--env JENKINS_HOME=/var/jenkins_home \
-v $JENKINS_DIR:/var/jenkins_home \
$VARGS \
$ADDITIONALARGS \
$IMAGE \
/bin/tini /usr/local/bin/jenkins.sh \
)
echo "INFO: container ID:$ID" |tee JENKINS.CONTAINER.ID

Параметры были переданы в переменную докера в команде запуска докера, а затем переданы к команде запуска Дженкинса.

0
ответ дан 2 December 2019 в 21:00

Теги

Похожие вопросы