Debian sıkısında Jenkins CI UTC yerine Yerel saat kullanmak nasıl


15

Debian squeeze bir Jenkins-ci kurulumum var.

Geçerli varsayılan saat dilimi: 'America / Toronto'
Yerel saat şimdi: Pzt 9 Tem 16:00:57 EDT 2012.
Evrensel Zaman şimdi: Pzt Tem 9 20:00:57 UTC 2012.

/ Etc / default / rcS dosyasında var:

UTC = no

Ne yazık ki bu çalışmıyor, Cenkins sistem bilgilerinde:

user.timezone Etc / UTC

Birkaç saat aradım ... ne yazık ki herhangi bir yardım büyük mutluluk duyacağız bir düzeltme bulamadı.

Zaman ayırdığınız için teşekkürler


2
6.5 yıl sonra, kullanıcı profilimi görüntülenmesini istediğim saat dilimini ayarlayacak şekilde yapılandıramıyorum.
mkaatman

Yanıtlar:


16

Jenkins'i başlattığınızda, gerekli user.timezone değerini JVM bağımsız değişkeni olarak iletmeniz gerekir. Java komut satırı şuna benzer:

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

Ne yazık ki Debian kurulumuna aşina değilim, ancak JVM parametreleri ya /etc/init.d/jenkins komut dosyasında veya bu komut dosyasından başvurulan bir özellikler dosyasında tanımlanmalıdır.


Mükemmel çalışıyor teşekkürler.
drgn

1
Eklemeliyim, Jenkins geçmişe TimeTravel'i sevmiyorum: Son Başarı: -322 ms (# 30)
drgn


1
centos / rhel'de / etc / sysconfig / jenkins olarak ayarlayabilirsiniz: JENKINS_JAVA_OPTIONS = "- Duser.timezone = America / New_York"
nandoP

1
Debian'ın saat dilimini doğru şekilde kurduğuna inanmıyorum /etc/init.d/rc.local. Muhtemelen Jenkins'i başlatmak için bir Sysv init betiği vardı. Jenkins web sitesinde bazı örnekler var. UTC=noİçinde /etc/default/rcSmakinenizde saat dilimiyle ilgisi yoktur. Donanım saatinde depolanan zamanın yerel saat mi yoksa UTC saati mi olduğunu gösterir. Zaman, ntpseyahat olmadan zamanı yavaşça ayarlayacağından, istemci, zamanı veya başka bir NTP artalanını istemci olarak ayarlama hakkında.
Anders

9

Üç yıl sonra, birkaç işe yaradı. Bu nedenle, kabul edilen cevabı (doğru olanı) ayrıntılı olarak açıklayacağım ve CentOS için tam bir cevap ekleyeceğim.


1. sırada: Değiştirilecek Jenkins ayarları

Zaman diliminin değiştirilmesiyle ilgili mevcut Jenkins belgelerinin user.timezone veya tanımlanacağı belirtiliyor org.apache.commons.jelly.tags.fmt.timeZone. Ancak, her ikisinin de gerekli olduğunu gördüm . Jöle biri Jenkins uygun ve bazı eklentiler için çalışırken, kullanıcı bir diğer eklentiler için çalışır.


Gotcha # 2: Güncellenecek işletim sistemi ayarları

Doğu ABD'deki CentOS için şunu düzenleyin /etc/sysconfig/jenkins:

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

Bu -Dayarları yaparsanız JENKINS_ARGS, çalışmaz.


Anladım # 3: Yeniden Başlatma

Komut satırından, tüm hizmetten yeniden başlatmanız gerekir. Sadece Jenkins güvenli bir yeniden başlatma yapmak yeterli değildir . Yani:

sudo service jenkins restart

Tüm bunları yaptıktan sonra, her iki saat dilimi ayarının Jenkins sistem bilgi panelinizde eşleştiğini kontrol edin : http://jenkins.example.com/systemInfo


1
Bu, Centenk altında bir docker kapsayıcısında jenkinleri çalıştırırken yardımcı oldu, ancak / etc / sysconfig / jenkins'de ayarlanmayan seçenekler. Seçenekler, docker run komutundaki docker değişkenine aktarıldı ve sonra jenkins start komutuna geçirildi.
gaoithe

7

Ubuntu 14.04'te, yukarıdaki çözümlerin hiçbiri benim için çalışmadı, ancak aşağıdaki komutu çalıştırdım, bu da zaman diliminin varsayılandan (hiçbiri seçilmedi) daha spesifik bir şeye değiştirilebileceği bir arabirimi çekti:

sudo dpkg-reconfigure tzdata

İlk olarak, kıtayı (yani Amerika, Asya, vb.) Ve ardından benim durumumda Hindistan'daki IST saat dilimi için "Asya / Kalküta" ile sonuçlanan şehri seçmeniz istenir.

Bkz. UbuntuTime - Komut Satırını Kullanma .

Ayrıca, saat dilimini değiştirdikten sonra Jenkins'i yeniden başlattım:

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

ve ardından zamanın yerel IST saatinde olduğunu doğruladı. In http://<yourservername>/systemInfoSistem Özellikleri bölümünde, kullanıcı piskopos tarafından sağlandığı şekliyle, "user.timezone" özelliği için, şimdi değeri olarak "Asya / Kolkata" bölümüne bakın.


2

Jenkins'i Apache Tomcat'te çalıştırıyorsanız, bunları <Apache-Tomcat-Dir> /conf/catalina.properties dosyasına ekleyin:

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

Her ikisi de gereklidir.


2

Bu, işlerin bir cron zamanlamaya (yani Periyodik Olarak Oluştur) dayalı olarak yürütülmesi ile ilgiliyse, saat dilimini cron zaman çizelgesinde iş başına göre ayarlayabilirsiniz:

TZ=Europe/Dublin
0 7 * * 1-5

0

CentOS 7.1'deki (docker'da) jenkins v2.73.3 için her ikisini de

1. OS saat dilimini ayarlayın, örneğin 'ln -sf / usr / share / zoneinfo / Asia / Jakarta / etc / localtime' ve

2. Jenkins'i Yönet altında saat dilimini ayarlayın, örneğin 'Asia / Jakarta'.

Düzenli bir cenkinden sonra: xxxx / restart yeni saat dilimi kullanılır.


0

CentOS altındaki bir docker kapsayıcısında jenkinleri çalıştırırken durumu kapsayacak bir yanıt ekleme . Bu durumda, seçenekler / etc / sysconfig / jenkins içinde ayarlanmamış olabilir (jenkins hizmet başlangıç ​​komut dosyalarınıza bağlı olarak). Jenkins hizmetini başlatmak için bir jenkins.sh betiği kullanılır. Bu jenkins.sh betiği, jenkins-in-docker projesi tarafından kullanılana benzer, bu nedenle bu cevap, bundan doğan docker projelerindeki herhangi bir jenkins için faydalıdır.

https://github.com/jenkinsci/docker/blob/master/jenkins.sh

Aşağıda TZ, örneğin Avrupa / Dublin ve docker'a -e $ TZ'yi geçiyoruz, böylece / etc / timezone veya links / etc / localtime'a yazan bir komut dosyası alabiliriz, ancak önemli olan bu iki argümanı JAVA_OPTS'da geçirmektir: "-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ". Jenkins.sh betiği, bunları jenkins işlemini başlatan komut satırına iletir.

Docker çalıştır komutunun kapsayıcı örneğini oluştururken docker ana bilgisayarında:

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

Seçenekler, docker run komutundaki docker değişkenine aktarıldı ve sonra jenkins start komutuna geçirildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.