2012-01-27 19 views
29

मैं जेनकींस चलाने के लिए एक नया सर्वर स्थापित कर रहा हूं। मेरे पास नौकरियों के साथ मौजूदा जेनकिंस सर्वर है। अब, मैं पुराने उदाहरण से नए उदाहरण में नौकरियों की प्रतिलिपि बनाना चाहता हूं।मैं एक उदाहरण से दूसरे में नौकरी की प्रतिलिपि कैसे बना सकता हूं?

नया उदाहरण मैं न्यू नौकरी स्क्रीन पर हूँ पर

। मैंने देखा है कि "मौजूदा नौकरी की प्रतिलिपि बनाएँ" विकल्प है। जब मैंने पुराने उदाहरण पर नौकरी के मार्ग में प्रवेश किया, तो मुझे यह कहते हुए एक त्रुटि मिली कि "http://old-instance/job/jobName पर ऐसी कोई नौकरी नहीं है"।

मैं कैसे एक नौकरी एक उदाहरण से दूसरे में कॉपी कर सकते हैं?

+0

को नौकरी ले जाएँ और आप यकीन है कि आप न केवल एक जेनकींस दास के रूप में अपने नए सर्वर स्थापित करने के लिए करना चाहते हैं, जैसे कि नौकरियां हैं दोनों सर्वरों के बीच वितरित किया जाएगा? –

+0

नहीं, पुरानी मशीन सेवानिवृत्त हो रहा है। – Isaac

+0

http://stackoverflow.com/questions/8424228/export-import-jobs-in-jenkins/30575318#30575318 – petey

उत्तर

26

पुस्तिका, https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins के अनुसार, यह नया जेनकींस उदाहरण के लिए इसी काम निर्देशिका स्थानांतरित करने के लिए बस है।

"मौजूदा नौकरी की प्रतिलिपि बनाएँ" विकल्प के लिए वर्तमान जेनकींस उदाहरण पर नौकरी मौजूद होना आवश्यक है। यह मौजूदा नौकरी को टेम्पलेट के रूप में उपयोग करने का विकल्प है। इसका उपयोग उदाहरणों के बीच नौकरियों को स्थानांतरित करने के लिए नहीं किया जा सकता है।

+1

बिल्कुल वही नहीं जो मैं सुनना चाहता था, लेकिन वैसे भी धन्यवाद। – Isaac

+0

इसके बारे में क्षमा करें;) – Magnus

+3

ध्यान दें कि कॉपी किए गए नौकरी के लिए डिस्क से कॉन्फ़िगरेशन को नए जेनकिन्स इंस्टेंस पर प्रदर्शित करना होगा। पुनः लोड करने के लिए व्यवस्थापक पृष्ठों में एक लिंक है। आपको इसे अपने उत्तर में जोड़ना चाहिए। –

15

वहाँ (जो भी काम करता है) फ़ाइल प्रतियां बिना कि ऑनलाइन करने के लिए एक बहुत ही प्लगइन है: नौकरी आयात प्लगइन: https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin

संबंध

डिडिएर

+0

आज 1.2 में, प्रचार के साथ काम नहीं करते । –

+0

सुंदर साफ। ठीक काम करता है। – FacePalm

+1

यह अच्छा हो सकता था - लेकिन मेरे लिए काम नहीं करता –

2

नौकरी आयात प्लगइन करने के लिए सबसे आसान तरीका है एक जेनकींस उदाहरण से दूसरे में नौकरियों की प्रतिलिपि बनाएँ। अगर वह कुछ सुरक्षा चिंताओं के कारण काम नहीं कर रहा है तो आप पूरी जॉब्स निर्देशिका को पुराने जेनकींस इंस्टेंस से नए जेनकिन्स इंस्टेंस में कॉपी कर सकते हैं। सर्वर पर जॉब्स {जेनकिन्स_होम} \ jobs .. में मौजूद हैं।

एक बार जब आप प्रति के साथ किया जाता है, बस नया उदाहरण पर विन्यास लोड करें। आप> Jenkins- से यह पुनः लोड कर सकते डिस्क

से Jenkins-> पुनः लोड विन्यास प्रबंधित एक बार फिर से लोड पूरा हो गया है तो आप अपने जॉब देख सकते हैं। :)

1

तुम सिर्फ काम के रूप में एक ही नाम के साथ एक निर्देशिका बनाने की जरूरत है और यह मूल जेनकींस से config.xml फ़ाइल की प्रतिलिपि बनाएँ।

बस सावधान रहें कि यदि आपको बिल्ड नंबरिंग को संरक्षित करने की आवश्यकता है तो आपको बिल्ड नंबर फ़ाइल में नंबर कॉपी करने की आवश्यकता होगी, और सावधान रहें यदि आपके पास जेनकिंस सर्वर दोनों पर अलग-अलग प्लगइन हैं, क्योंकि @LeeMeador उनकी टिप्पणियों में कहता है।

+0

यदि आप बिल्ड नंबरिंग अनुक्रमों को संरक्षित करना चाहते हैं (शायद आप इसे उदाहरण के लिए जिरा में रिकॉर्ड करते हैं) तो आपको बिल्ड नंबर फ़ाइल में भी संख्या कॉपी करनी होगी। Config.xml के बगल में उसी फ़ोल्डर में। –

+0

यह न भूलें कि config.xml में प्लगइन से संबंधित सामान शामिल हैं। यदि आपके पास नए जेनकींस में अलग-अलग प्लगइन्स हैं, तो आप सेटिंग्स पर जांच करने और फिर से सहेजने के लिए किसी भी प्रतिलिपि की गई नौकरियों के लिए जेनकींस कॉन्फ़िगर स्क्रीन पर जाना चाहेंगे। –

+0

आप उन दो टिप्पणियों में सही हैं @LeeMeador – Roberto

4

वहाँ कम से कम तीन तरीके

  1. कॉपी नौकरियों निर्देशिका
  2. उपयोग आयात प्लगइन https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin
  3. उपयोग जेनकींस CLI, रोजगार सूची नौकरी एक्सएमएल और फिर नए सर्वर पर एक काम बनाने के लिए कर रहे हैं xml
0

पर आधारित मैंने सीएलआई का उपयोग करके ऐसी प्रक्रियाओं को स्वचालित करने के लिए पर्ल का उपयोग किया ($ jenkins_URL/cli/पर जाएं और जी डाउनलोड करें nkins-cli.jar) (स्क्रिप्ट अपने परिदृश्य के लिए बदल)

यह सुनिश्चित करें कि आप सभी आवश्यक प्लग इन अपने नए जेनकींस पर स्थापित अन्यथा किसी माइग्रेशन विधि काम नहीं करेगा है कि बनाने के लिए महत्वपूर्ण है ...

my $newJobPrefix = "New_Jenkins"; 
my $jobPrefix = "Old_Jenkins"; 
my $result = `"$java" -jar old-jenkins-cli.jar -noKeyAuth -s $jenkins_URL list-jobs All`; 
@jobList = split("\n", $result); 
foreach my $job (@jobList) 
{ 
    # ---- Getting configuration of jobs ---- 
    print "Getting config for: $job \n"; 
    my $config = `"$java" -jar $jenkinsJar -noKeyAuth -s $jenkins_URL get-job $job`; 

    my $file = "$jobPrefix\\$job.xml"; 
    unless(open FILE, '>', $file) {die "Unable to open $file";} 
    print FILE $config; 
    close FILE; 

    # ---- Adding Job to new Jenkins ---- 
    my $result = `"$java" -jar new-jenkins-cli.jar -noKeyAuth -s $New_jenkins_URL create-job $job< $file`; 
} 

शुभकामनाएं!की config से नया उदाहरण पर एक नौकरी बनाने के लिए http://<jenkins-server>/user/<username>/configure

  • कर्ल आदेश:

  • +0

    शुभकामनाएं क्योंकि आप पर्ल की वकालत कर रहे हैं? यह काम कर सकता है, लेकिन कई चीजों को सत्य होने की आवश्यकता है: ए> जावा का सही संस्करण उपलब्ध है, बी> "पुरानी जेनकींस-क्ली.जर" और "न्यू-जेनकिंस-क्ली.जर", सी> की उपस्थिति क्ली कमांड के अब बहिष्कृत रूप में, डी> वर्किंग पर्ल, ई> उस पुराने और नए सर्वर के पास समान (या बहुत समान) प्लगइन और कॉन्फ़िगरेशन है, एफ> कि कॉपी की गई नौकरियां किसी अन्य सामग्री पर निर्भर नहीं हैं जैसे कि क्रेडेंशियल्स या स्थानीय पर्यावरण। –

    +0

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

    +0

    मैं गुड लक के साथ अपने अधिकांश उत्तरों पर भी हस्ताक्षर करता हूं। – Dvir669

    3

    तुम भी कमांडलाइन पर ऐसा कर सकता है:

    1. अपने उपयोगकर्ता के लिए इकट्ठा दो जेनकींस उदाहरणों से प्रमाणीकरण एपीआई टोकन पुराने उदाहरण: curl -k -s http://<user>:<token>@OLD_JENKINS/job/JOBNAME/config.xml | curl -k -X POST https://<user>:<token>@http://NEW_JENKINS/createItem?name=JOBNAME --header "Content-Type: application/xml" -d @-

    (https://stackoverflow.com/a/30575318/3891027 के सौजन्य से)

    0
    1. कॉपी मौजूदा फ़ोल्डर में काम
    2. नया फ़ोल्डर
    संबंधित मुद्दे

     संबंधित मुद्दे