जेनकिंस को एक पीसी से दूसरे पीसी में कैसे ले जाएं


154

मैं वर्तमान में अपने विकास पीसी पर जेनकिन्स का उपयोग कर रहा हूं। मैंने इसे अपने विकास पीसी पर स्थापित किया, क्योंकि मुझे इस उपकरण पर सीमित ज्ञान था; इसलिए मैंने अपने विकास पीसी में इस पर परीक्षण किया। अब, मैं जेनकिंस के साथ निर्माण प्रक्रिया में अपने दीर्घकालिक "साझेदार" के रूप में सहज महसूस करता हूं और समर्पित जेन सर्वर के लिए इस जेनकींस को "स्थानांतरित" करना चाहूंगा।

इससे पहले मैंने कुछ बिल्ड किए हैं और प्रत्येक बिल्ड से संग्रहीत कलाकृतियां हैं। विशेष रूप से, संस्करण नियंत्रण के लिए बिल्ड नंबर मेरे लिए बहुत महत्वपूर्ण है।

मैं अपने वर्तमान पीसी से अपने नए सर्वर से सभी जेनकिन्स जानकारी कैसे निर्यात कर सकता हूं?


6
मैंने बस यही किया। मैंने सेड्रिक जूलियन के उत्तर से चरणों का पालन किया, लेकिन मैंने पाया कि विंडोज पर मुझे मरम्मत स्थापित करने से पहले जेनकिंस को स्थानांतरित करने के बाद सफलतापूर्वक लॉन्च करना पड़ा। मरम्मत के बाद, सब कुछ ठीक है।
Smurph269

जवाबों:


175

जेनकिंस विकी के बाद , आपको निम्न करना होगा:

  • नए सर्वर पर एक नया जेनकींस इंस्टेंस स्थापित करें
  • सुनिश्चित करें कि पुराने और नए जेनकींस उदाहरणों को रोक दिया गया है
  • पुराने जेनकींस उदाहरण के JENKINS_HOME की सभी सामग्री को संग्रहीत करें
  • संग्रह को नई JENKINS_HOME निर्देशिका में निकालें
  • नई जेनकींस उदाहरण लॉन्च करें
  • दस्तावेज़ों / लिंक को जेनकींस के अपने नए उदाहरण में बदलना न भूलें :)
  • नई जेनकींस फ़ाइलों के स्वामी को बदलना न भूलें: chown -R jenkins:jenkins $JENKINS_HOME

JENKINS_HOME में स्थित डिफ़ॉल्ट रूप से है ~/.jenkinsएक लिनक्स स्थापना पर, अभी तक जहां यह स्थित है मिल जाए, पर जाना वास्तव में करने के लिए http: // your_jenkins_url / कॉन्फ़िगर पेज और पहली पैरामीटर का मान की जाँच करें: Home directory; यह JENKINS_HOME है।


1
जब मैंने अपने नए जेनकींस लॉन्च किए, तो मेरे नोड्स नीचे दिखाई दे रहे हैं, जो सही है। लेकिन जब मैंने कुछ नोड्स पर क्लिक किया तो नीचे दिए गए पुराने जेनकींस की ओर इशारा करते हैं: दास कमांड लाइन से चलाएं: javaws ओल्ड- जेनकिंस -सर्वर: 8080 / कंप्यूटर / स्लेवमैचाइन 1 / स्लेव-एजेंट.jnlp या यदि गुलाम हेडलेस है: जावा -jar slave.jar -jnlpUrl पुराने- जेनकिंस -सर्वर: 8080 / कंप्यूटर / slaveMachine1 / slave-agent.jnlp अब मुझे नए नोड-सर्वर को इंगित करने के लिए प्रत्येक नोड के लिए ये URL कैसे बनाने चाहिए?
मर्लाचंद्र

13
मेरी पिछली टिप्पणी में वर्णित मेरी समस्या का हल मिल गया: गोटो प्रबंधित जेनकींस> कॉन्फ़िगर प्रणाली। यहां 'जेनकिंस URL' फ़ील्ड के अंतर्गत अनुभाग 'जेनकिंस स्थान', नए जेनकींस सर्वर पर इंगित करने के लिए URL को बदलें।
18

3
छिपे हुए फ़ोल्डरों को भी कॉपी करना सुनिश्चित करें!
मोहि

7
haha +1 "जेनकींस के अपने नए उदाहरण के लिए प्रलेखन / लिंक बदलने के लिए मत भूलना"
इयान स्मिथ

2
मुझे सही फ़ाइल अनुमतियाँ और स्वामित्व की समस्या थी, इसे ठीक करने के लिए मैंने इस डॉक स्क्रिप्ट का उपयोग किया (वह भाग जो स्वामी / अनुमतियाँ सेट करता है): hub.docker.com/r/appcontainers/jenkins/~/dockerfile
marcinx

53

यदि आपकी JENKINS_HOME निर्देशिका कॉपी करने के लिए बहुत बड़ी है , और आपको केवल एक ही जॉब, जेनकिंस प्लगइन्स और जेनकिंस कॉन्फ़िगरेशन को सेटअप करने की आवश्यकता है (और पुराने जॉब की कलाकृतियों और रिपोर्ट की आवश्यकता नहीं है), तो आप बिनबेकअप प्लगइन का उपयोग कर सकते हैं :

  1. स्रोत और लक्ष्य जेनकिंस सर्वर दोनों पर ThinBackup स्थापित करें
  2. दोनों पर बैकअप निर्देशिका कॉन्फ़िगर करें (जेनकींस प्रबंधित करें -> थिनबैकअप -> सेटिंग्स)

  3. सोर जेनकिन्स पर थिनबैकअप -> बैकअप नाउ पर जाएं

  4. जेनकिंस स्रोत बैकअप निर्देशिका से जेनकिंस लक्ष्य बैकअप निर्देशिका की प्रतिलिपि बनाएँ
  5. टारगेट जेनकिन्स पर थिनबैकअप -> रिस्टोर पर जाएं, और फिर जेनकिंस सेवा को पुनः आरंभ करें।
  6. यदि कुछ प्लगइन्स या नौकरियां गायब हैं, तो बैकअप सामग्री को सीधे लक्ष्य JENKINS_HOME पर कॉपी करें।

  7. यदि आपके पास स्रोत जेनकींस पर उपयोगकर्ता प्रमाणीकरण था, और अब लक्ष्य जेनकिंस पर बंद कर दिया गया है, तो जेनकिंस config.xml को संपादित करें, <useSecurity>गलत पर सेट करें और जेनकिंस को पुनरारंभ करें।


2
JENKINS_HOME निर्देशिका कभी भी प्रतिलिपि बनाने के लिए बहुत बड़ी क्यों होगी? हम किस आकार के बारे में बात कर रहे हैं?
वॉटनानी

9
मेरे जेनकिंस_होम 100Gb या तो है, न ही उस नए सर्वर को कॉपी करना चाहते हैं, जैसा कि इसके ज्यादातर सामान को फेंक देते हैं
user230910

3
My Jenkins_home ~ 4TB है, इसलिए एक पतली प्रति जो केवल विन्यास का निर्माण करती है और बिल्ड हिस्टरी या / यूजर कॉन्टेंट में से कोई भी उपयोगी नहीं है।
२१

बहुत बढ़िया, प्लगइन्स ... वास्तव में बहुत समय बचा है .. 100 जीबी की
नकल

11

इसने मेरे लिए उबंटू 12.04 (जेनकिंस वर्थ 1.628) से उबंटू 16.04 (जेनकिंस वर्थ 1.651.2) स्थानांतरित करने के लिए काम किया। मैंने पहली बार रिपॉजिटरी से जेनकिंस को स्थापित किया

  1. दोनों जेनकींस सर्वर बंद करो
  2. JENKINS_HOMEपुराने सर्वर से नए के लिए कॉपी (जैसे / var / lib / jenkins)। नए सर्वर में कंसोल से:

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. अपना नया जेनकींस सर्वर शुरू करें

आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन मुझे करना पड़ा

  • Manage Jenkinsऔर Reload Configuration from Disk
  • डिस्कनेक्ट करें और सभी दासों को फिर से कनेक्ट करें।
  • जाँच करें कि Configure System > Jenkins Location, Jenkins URLसही ढंग से नए जेनकींस सर्वर को सौंपा गया है।

क्या नई जेनकींस के पास पुराने संस्करण के समान था?
जकूब कजप्लेकी

@JakubCzaplicki - दोनों जेनकिन्स 1.6 थे, लेकिन बिल्कुल एक ही संस्करण नहीं। उत्तर अपडेट किया गया। मैंने तब Ubuntu 16.04 को जेनकिन्स 2.6 में बदल दिया, जो जेनकिंस.वर फ़ाइल की जगह ले रहा था और इसने अच्छा काम किया। stackoverflow.com/questions/11062335/…
कटु

उपरोक्त करने और जाने के बाद /configureSecurityमुझे मिलता हैjava.lang.AssertionError: InstanceIdentity is missing its singleton
अधिमास

@ maxisme, देर से लेकिन यह धागा बताता है कि आपके द्वारा बताई गई समस्या जावा संस्करण से संबंधित है। मुद्दों। jenkins-ci.org/browse/JENKINS-46182
काटू

1

जेनकींस सर्वर स्वचालन:

चरण 1:

जेनिटक के स्थानीय या गिटहब प्राइवेट रिपॉजिटरी में जेनकिन्स होम (नौकरी, कॉन्फ़िगरेशन, प्लग इन आदि) को स्टोर करने के लिए एक रिपॉजिटरी सेट करें और जेनकिंस जॉब्स, प्लगइन्स इत्यादि में किसी भी नए बदलाव को आगे बढ़ाकर इसे नियमित रूप से अपडेट करते रहें।

चरण 2:

जेनकींस के लिए एक कठपुतली मेजबान-समूह / भूमिका को कॉन्फ़िगर करें जिसका उपयोग नए जेनकींस सर्वर को स्पिन करने के लिए किया जा सकता है। एक कठपुतली नुस्खा में सभी बुनियादी विन्यास करें और सुनिश्चित करें कि यह जेनकिन्स के नवीनतम संस्करण को स्थापित करता है और इसके लिए एक अलग निर्देशिका / माउंट सेट करता है JENKINS_HOME

चरण 3:

ऊपर जेनकिंस-कठपुतली विन्यास का उपयोग करके एक नई मशीन को स्पिन करें। जब सब कुछ स्थापित हो जाता है, तो Git रिपॉजिटरी से जेनकिंस होम डायरकोट्री में जेनकिन्स कॉन्फ़िगरेशन को पकड़ो / क्लोन करें और जेनकिंस को पुनरारंभ करें।

चरण 4:

जेनकिंस यूआरएल पर जाएं, जेनकिंसमैनेज प्लगिन प्रबंधित करें और उन सभी प्लगइन्स को अपडेट करें जिन्हें अपडेट की आवश्यकता है।

किया हुआ

आप गुलाम नोड्स को ऑटो-स्केल करने के लिए डोकर झुंड या कुबेरनेट का उपयोग कर सकते हैं ।


1

कभी-कभी हमारे पास जेनकिंस मशीन तक पहुंच नहीं हो सकती है, ताकि किसी फ़ोल्डर को सीधे दूसरे जेनकिन्स इंस्टेंस में कॉपी किया जा सके। इसलिए मैंने एक मेनू चालित उपयोगिता लिखी, जिसमें जेनकींस रीस्ट एपीआई कॉल का उपयोग एक जेनकिंस उदाहरण से दूसरे में प्लगइन्स और नौकरियों को स्थापित करने के लिए किया गया।

प्लगइन प्रवास के लिए:

  1. अनुरोध प्राप्त करें: {SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1आपको उनके संस्करण के साथ इंस्टॉल किए गए प्लगइन्स की सूची मिल जाएगी।
  2. आप इन प्लगइन्स को स्थापित करने के लिए निम्नलिखित मापदंडों के साथ एक पोस्ट अनुरोध भेज सकते हैं।

    final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins`
    
    data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name)
    
    auth=`(destination_jenkins_username, destination_jenkins_password)`
    
    header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json
    

नौकरी के प्रवास के लिए:

  1. आप REST कॉल का उपयोग करके {SOURCE_JENKINS_URL} पर स्थापित नौकरियों की सूची प्राप्त कर सकते हैं, {SOURCE_JENKINS_URL}/view/All/api/json
  2. तब आप नौकरी के URL से {SOURCE_JENKINS_URL} नौकरियों से प्रत्येक config.xml फ़ाइल प्राप्त कर सकते हैं {SOURCE_JENKINS_URL}/job/{JOB_NAME}
  3. {DESTINATION_JENKINS_URL} पर XML फ़ाइल की सामग्री को पोस्ट करने के लिए इस config.xml फ़ाइल का उपयोग करें और यह {DESTINATION_JENKINS_URL} पर एक नौकरी पैदा करेगा।

मैंने पायथन में एक मेनू-संचालित उपयोगिता बनाई है जो उपयोगकर्ता को प्लगइन या जेनकिंस माइग्रेशन शुरू करने के लिए कहता है और इसे करने के लिए जेनकिंस रीस्ट एपीआई कॉल का उपयोग करता है।

आप इस URL से JenkinsMigration.docx का संदर्भ ले सकते हैं


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
विच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.