डेबिन निचोड़ पर यूटीसी के बजाय जेनकिंस सीआई स्थानीय समय का उपयोग कैसे करें


15

मेरे पास डेबियन निचोड़ पर जेनकिंस-सीआई इंस्टॉलेशन है।

वर्तमान डिफ़ॉल्ट समय क्षेत्र: 'अमेरिका / टोरंटो'
स्थानीय समय अब ​​है: सोम जुलाई 9 16:00:57 EDT 2012।
यूनिवर्सल टाइम अब है: सोम जुल 9 20:00:57 यूटीसी 2012।

/ Etc / default / rcS फ़ाइल में मेरे पास है:

यूटीसी = नहीं

दुर्भाग्य से यह काम नहीं कर रहा है, जेनकिंस की सिस्टम जानकारी में:

user.timezone Etc / UTC

मैंने कुछ घंटों तक खोज की .. दुर्भाग्य से एक तय नहीं मिल सका कि किसी भी मदद की बहुत सराहना की जाएगी।

आपके समय के लिए धन्यवाद


2
6.5 साल बाद, मैं अभी भी अपने उपयोगकर्ता प्रोफ़ाइल को उस टाइमज़ोन को सेट करने के लिए कॉन्फ़िगर नहीं कर सकता, जिसे मैं प्रदर्शित करना चाहता हूं।
22

जवाबों:


16

जब आप जेनकिंस शुरू करते हैं तो आपको JVM तर्क के रूप में user.timezone के अपने आवश्यक मूल्य में पास करना होगा। जावा कमांड लाइन कुछ इस तरह दिखाई देगी:

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

दुर्भाग्य से मैं डेबियन स्थापना से परिचित नहीं हूं, लेकिन जेवीएम मापदंडों को /etc/init.d/jenkins स्क्रिप्ट में या उस स्क्रिप्ट से संदर्भित गुण फ़ाइल में परिभाषित किया जाना चाहिए।


यह पूरी तरह से काम धन्यवाद।
19

1
मुझे जोड़ना होगा, जेनकिंस को टाइमट्रेल से अतीत पसंद नहीं है: अंतिम सफलता: -322 एमएस (# 30)
20-11

1
यह भी देखें कि stackoverflow.com/questions/8777111/jenkins-show-wrong-time/… , उत्तर के साथ मूल रूप से wiki.jenkins-ci.org/display/JENKINS/Cen+time+zone
michael

1
centos / rhel पर, आप / etc / sysconfig / jenkins में सेट कर सकते हैं: JENKINS_JAVA_OPTIONS = "- Duser.timezone = अमेरिका / New_York"
nnPP

1
मुझे विश्वास नहीं है कि डेबियन ने समय क्षेत्र को ठीक से स्थापित किया है /etc/init.d/rc.local। शायद आप में से काम किया है जेनकिंस शुरू करने के लिए एक Sysv init स्क्रिप्ट पड़ा है। जेनकिंस वेबसाइट पर कुछ उदाहरण हैं। UTC=noमें /etc/default/rcSआपकी मशीन पर समय क्षेत्र के साथ कोई संबंध नहीं है। यह बता रहा है कि हार्डवेयर घड़ी में संग्रहीत समय स्थानीय समय या यूटीसी समय है। ntpएक ग्राहक के रूप में समय, उपयोग या किसी अन्य एनटी-डेमन को समायोजित करने के बारे में , क्योंकि यह समय यात्रा के बिना धीरे-धीरे समय को समायोजित करेगा।
एंडर्स

9

तीन साल बाद, मुझे कई गोचरों को काम करने के लिए मिला। इसलिए, मैं स्वीकृत उत्तर (जो सही है) पर विस्तृत रूप से बताऊंगा और CentOS के लिए एक पूर्ण उत्तर जोड़ूंगा।


गोत्र # 1: जेनकींस सेटिंग्स बदलने के लिए

बदलते समय क्षेत्र पर वर्तमान जेनकिंस प्रलेखन परिभाषित करने के लिए user.timezone या कहता है org.apache.commons.jelly.tags.fmt.timeZone। लेकिन, मैंने पाया है कि दोनों आवश्यक हैं। जेली एक जेनकिन्स उचित और कुछ प्लगइन्स के लिए काम करता है, जबकि उपयोगकर्ता एक अन्य प्लगइन्स के लिए काम करता है।


Gotcha # 2: अपडेट करने के लिए OS सेटिंग्स

पूर्वी अमेरिका में 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: पुनः आरंभ करना

आपको कमांड लाइन, संपूर्ण सेवा से पुनरारंभ करना होगा। बस जेनकिंस सुरक्षित पुनरारंभ करना पर्याप्त नहीं है । इसलिए:

sudo service jenkins restart

जब आपने यह सब कर लिया है, तो जाँच लें कि दोनों समय क्षेत्र सेटिंग्स आपके जेनकींस सिस्टम सूचना पैनल में मेल खाते हैं: http://jenkins.example.com/tystemInfo


1
CentOS के तहत डॉकटर कंटेनर में जेनकिंस चलाते समय यह मदद करता है लेकिन विकल्प / etc / sysconfig / jenkins में सेट नहीं होते हैं। डॉक रन कमांड में डॉक चर में विकल्प पारित किए गए और फिर जेनकिंस स्टार्ट कमांड को पास किया गया।
गौहिते

7

उबंटू 14.04 में, उपरोक्त में से किसी भी समाधान ने मेरे लिए काम नहीं किया, लेकिन मैंने निम्नलिखित कमांड को चलाना समाप्त कर दिया, जो एक इंटरफ़ेस को ऊपर खींचता है जहां समयक्षेत्र को डिफ़ॉल्ट (कोई नहीं चुना गया) से कुछ और अधिक विशिष्ट में बदला जा सकता है:

sudo dpkg-reconfigure tzdata

सबसे पहले, आपको महाद्वीप (यानी अमेरिका, एशिया, आदि) और फिर शहर का चयन करने के लिए प्रेरित किया जाता है, जिसके परिणामस्वरूप मेरे मामले में भारत में IST timezone के लिए "एशिया / कोलकाता" हो गया।

देखें UbuntuTime - कमांड लाइन का उपयोग करना

इसके अलावा, टाइमज़ोन बदलने के बाद, मैंने जेनकिंस को फिर से शुरू किया:

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

और फिर सत्यापित किया कि समय स्थानीय IST समय में था। में http://<yourservername>/systemInfo, के रूप में सिस्टम गुण खंड के अंतर्गत, उपयोगकर्ता बिशप द्वारा प्रदान की, "user.timezone" संपत्ति के लिए, मैं अब "एशिया / कोलकाता" अपने मूल्य के रूप में देखते हैं।


2

यदि आप Apache Tomcat में जेनकिन्स चला रहे हैं, तो इन्हें <Apache-Tomcat-Dir> /conf/catalina.properties में जोड़ें:

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

दोनों की जरूरत है।


2

यदि यह क्रोन शेड्यूल (यानी समय-समय पर निर्माण) के आधार पर नौकरियों के निष्पादन से संबंधित है, तो आप प्रति कार्य के आधार पर क्रोन अनुसूची में समय क्षेत्र निर्धारित कर सकते हैं:

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

0

CentOS 7.1 पर jenkins v2.73.3 के लिए (docker में) हमने पाया है कि आपके पास दोनों हैं

1. OS टाइमज़ोन सेट करें जैसे 'ln -sf / usr / share / zoneinfo / एशिया / जकार्ता / आदि / स्थानीय समय और'

2. मैनेज जेंकिन्स के तहत टाइमजोन सेट करें जैसे 'एशिया / जकार्ता'।

एक नियमित जेनकिंस के बाद: xxxx / पुनरारंभ नए टाइमज़ोन का उपयोग किया जाता है।


0

जब स्थिति को कवर करने के लिए एक उत्तर जोड़ना CentOS के तहत एक डॉक कंटेनर में जेनकींस चलाते । इस मामले में विकल्प / etc / sysconfig / jenkins में सेट नहीं किए जा सकते हैं (आपकी जेनकींस सेवा प्रारंभ स्क्रिप्ट पर निर्भर करता है)। Jenkins सेवा शुरू करने के लिए jenkins.sh स्क्रिप्ट का उपयोग किया जाता है। यह jenkins.sh स्क्रिप्ट जेन्किन्स-इन-डॉक प्रोजेक्ट द्वारा उपयोग की जाने वाली सामग्री के समान है, इसलिए यह उत्तर उस से प्राप्त डॉक प्रोजेक्ट्स में किसी भी जेनकींस के लिए उम्मीद से उपयोगी है।

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

नीचे हमें टीके मिलते हैं जैसे यूरोप / डबलिन और पास -e $ TZ टू डूकर चलते हैं ताकि हमारे पास एक स्क्रिप्ट हो जो लिखता है कि / etc / timezone या लिंक / etc / localtime लेकिन महत्वपूर्ण बात यह है कि JAVAOPTS में इन दो तर्कों को पारित कर रहा है: "-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ"। Jenkins.sh स्क्रिप्ट कमांड-लाइन पर जाती है जो जेनकिंस प्रक्रिया शुरू करती है।

डॉक रन कमांड के कंटेनर उदाहरण का निर्माण करते समय docker होस्ट पर:

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

डॉक रन कमांड में डॉक चर में विकल्प पारित किए गए और फिर जेनकिंस स्टार्ट कमांड को पास किया गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.