जेनकिंस - नौकरियों के बीच चर?


87

जेनकिंस में मेरे दो काम हैं, दोनों को एक ही पैरामीटर की जरूरत है।

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


हम इतने सारे तरीकों का उपयोग कर सकते हैं: एक सबसे अच्छा तरीका वर्तमान नौकरी मापदंडों का उपयोग करना है, या ट्रिगर डाउनस्ट्रीम नौकरी में पूर्वनिर्धारित मापदंडों का उपयोग करना है
ksr

1
यह शीर्षक कितना भ्रामक है। यह "नौकरियों के बीच चर कैसे चल रहा है" स्वीकृत उत्तर भी एक प्लगइन है। अभिरुचि कि!
राकिब

जवाबों:


73

आप Parameterized ट्रिगर प्लगिन का उपयोग कर सकते हैं जो आपको एक कार्य से दूसरे कार्य में पैरामीटर पास करने देगा।

आपको इस पैरामीटर को जोड़ने की आवश्यकता है जो आप अपस्ट्रीम से डाउनस्ट्रीम में पास हुए हैं।


10
हाय एक noob की तरह लग रहा है के लिए खेद है, लेकिन यह ठीक है अगर कोई यह विवरण के साथ संपादित कर सकता है कि यह कैसे परिशोधित ट्रिगर प्लगिन के साथ किया जाए?
Fadi

10
साइड नोट: यह ऐसा नहीं लगता है कि बैश स्क्रिप्ट अनुभागों में निर्मित निर्यात वातावरण चर आउटपुट मापदंडों में प्रतिस्थापन के लिए योग्य हैं (उदाहरण के लिए 'एक्सपोर्ट वर्सन' 'UPSTREAM_VERSION = $ वर्सन' सही मूल्य नहीं लेगा; यह सिर्फ प्राप्त होता है) '$ संस्करण' के बजाय)।
मार्क मैकेना

21
यह उत्तर अपर्याप्त है
ताराबेटे

6
मैं इस बात से सहमत हूं कि लक्ष्य नौकरी में मापदंडों को पारित करने के लिए किसी प्रकार का उदाहरण होना चाहिए। वर्तमान परिमाणित ट्रिगर प्लगिन पृष्ठ इस बारे में अच्छी जानकारी नहीं देता है। ऐसे उदाहरण हो सकते हैं कि मापदंडों को पारित करने में आपको किस तरह के वाक्यविन्यास का उपयोग करना चाहिए।
स्केरी

2
प्लगइन अब काम नहीं करता है। खुले मुद्दों की लंबी सूची देखें । मैं अब इस प्लगइन के साथ किसी भी पैरामीटर मान को पारित नहीं कर सकता। कोई और उपाय?
मार्कस एल

38

1.Post-Build Actions> सिलेक्ट करें "अन्य प्रोजेक्ट्स पर ट्रिगर पैरामीटरलाइज्ड बिल्ड"

2. मान के साथ पर्यावरण चर को पूरा करें। वैल्यू जेनकींस बिल्ड पैरामीटर्स भी हो सकता है।

विस्तृत चरण यहाँ देखे जा सकते हैं: -

https://itisatechiesworld.wordpress.com/jenkins-related-articles/jenkins-configuration/jenkins-passing-a-parameter-from-one-job-to-another/

आशा है कि यह उपयोगी है :)


यह उत्तर उस सवाल को संतुष्ट करता है, जो ओ पी एस को प्लगइन की आवश्यकता के बिना या डीएसएल का उपयोग किए बिना किया जाता है।
बीटीसी

8
FYI करें, इस उत्तर को अभी भी प्लगइन की आवश्यकता है।
थॉमस ली

प्लगिन महान है, लेकिन यह निष्पादित शेल कमांड वर्गों में सेट किए गए चर मानों को पारित नहीं कर सकता है।
तारा प्रसाद गुरुंग

25

यहां स्वीकृत उत्तर मेरे उपयोग के मामले में काम नहीं करता है। मुझे एक काम में गतिशील रूप से पैरामीटर बनाने और उन्हें दूसरे में पारित करने में सक्षम होने की आवश्यकता थी। जैसा कि मार्क मैककेना का उल्लेख है कि शेल बिल्ड चरण से पोस्ट बिल्ड कार्यों के लिए चर का निर्यात करने का कोई तरीका प्रतीत नहीं होता है।

मैंने किसी फ़ाइल में मान लिखकर और उस फ़ाइल का उपयोग मापदंडों के रूप में 'पोस्ट-बिल्ड-एक्शन जोड़ें' के माध्यम से आयात करने के लिए पैरामीटर का उपयोग करके एक वर्कअराउंड हासिल किया -> 'ट्रिगर पैरामीटराइज्ड बिल्ड ...' फिर 'पैरामीटर्स जोड़ें' का चयन करें - > 'गुण फाइल से पैरामीटर'।


यह वही है जो मुझे चाहिए था। धन्यवाद।
15

यदि आप जेनकिंस 2.x पाइपलाइन का उपयोग करने के इच्छुक हैं, तो आप नौकरियों के बीच स्टेट डेटा कॉपी करने के लिए writeFile / stash-> unstash / readFile का उपयोग कर सकते हैं। एक उदाहरण के लिए स्लाइडशेयर.net/ericlongtx/… चेकआउट स्लाइड 21।
siesta

यदि आप शेल चर से गुजरना चाहते हैं तो यह आवश्यक है। इस उत्तर के लिए बहुत सराहना की गई।
कार्ल वेनराइट

17

मुझे लगता है कि ऊपर दिए गए उत्तर को कुछ अपडेट की आवश्यकता है:

मैं अपनी अपस्ट्रीम बिल्ड कलाकृतियों को स्टोर करने के लिए एक डायनामिक डायरेक्टरी बनाने की कोशिश कर रहा था, इसलिए मैं अपने अपस्ट्रीम जॉब बिल्ड नंबर को डाउनस्ट्रीम जॉब में पास करना चाहता था। मैंने उपरोक्त चरणों की कोशिश की, लेकिन यह काम नहीं कर सका। यहाँ है कि यह कैसे काम किया:

  1. मैंने कॉपी कलाकृतियों प्लगइन का उपयोग करके अपनी वर्तमान नौकरी से कलाकृतियों की नकल की।
  2. अपस्ट्रीम जॉब की पोस्ट बिल्ड एक्शन में मैंने "SOURCE_BUILD_NUMBER = $ {BUILD_NUMBER}" जैसा वैरिएबल जोड़ा और डाउनस्ट्रीम जॉब को ट्रिगर करने के लिए इसे कॉन्फ़िगर किया।
  3. सब कुछ काम करता है सिवाय इसके कि मेरी डाउनस्ट्रीम नौकरी निर्देशिका बनाने के लिए $ SOURCE_BUILD_NUMBER प्राप्त करने में सक्षम नहीं थी।
  4. इसलिए मुझे पता चला कि इस चर का उपयोग करने के लिए मुझे नीचे की नौकरी में उसी चर को एक पैरामीटर चर के रूप में परिभाषित करना होगा जैसे नीचे इस चित्र में दिया गया है:

यहाँ छवि विवरण दर्ज करें

इसका कारण यह है कि जेनकिंस के नए संस्करण के लिए आपको डाउनस्ट्रीम नौकरी में भी चर को परिभाषित करना होगा। मुझे आशा है कि यह उपयोगी है।


पूर्णतया सहमत। यह एक अनिवार्य अद्यतन है जो 100% प्रारंभिक उत्तर को पूरा करता है।
कोडस्लेव

10

(साथी गोगलर्स के लिए)

यदि आप बिल्ड फ्लो प्लगइन के साथ एक गंभीर पाइपलाइन का निर्माण कर रहे हैं , तो आप इस तरह से DSL के साथ नौकरियों के बीच पैरामीटर पारित कर सकते हैं:

उपलब्ध स्ट्रिंग पैरामीटर "CVS_TAG" का चयन, ताकि इसे अन्य नौकरियों में पास किया जा सके:

build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
   // will be scheduled in parallel.
   { build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
   { build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])

उपलब्ध चर / प्रदर्शन दिखाने के लिए संकेत:

// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'

बिल्ड फ़्लो प्लगिन को हटा दिया गया है, उपयोगकर्ताओं को wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin
vhamon

7

बस अपना जवाब निगेल किर्बी के अलावा जोड़ दूं क्योंकि मैं अभी तक टिप्पणी नहीं कर सकता:

गतिशील रूप से बनाए गए पैरामीटर को पास करने के लिए, आप 'Execute Shell' टाइल में चर को निर्यात कर सकते हैं और फिर इसे 'अन्य मापदंडों पर ट्रिगर पैरामीटर निर्मित बिल्ड' => पूर्वनिर्धारित पैरामीटर "=> '' your_VAR- $ your_VAR 'के माध्यम से पास कर सकते हैं। मेरी टीम इस सुविधा का उपयोग npm पैकेज संस्करण को निर्माण कार्य से लेकर परिनियोजन कार्य में पास करने के लिए करती है

अद्यतन: ऊपर केवल जेनकिंस इंजेक्टेड मापदंडों के लिए काम करता है, शेल से बनाया गया पैरामीटर अभी भी उसी विधि का उपयोग करने की आवश्यकता है। जैसे। आपका_VAR = $ {your_VAR}> चर.प्रक्रिया को प्रतिध्वनित करें और उस फ़ाइल को डाउनस्ट्रीम में पास करें


3

मुझे उसी मुद्दे का सामना करना पड़ा जब मुझे एक डाउनस्ट्रीम रैंडेक जॉब के लिए पोम वर्जन पास करना पड़ा।

मैंने जो किया, वह गुण फ़ाइल के माध्यम से पैरामीटर इंजेक्शन का उपयोग कर रहा था जैसे:

1) शेल के माध्यम से गुण फ़ाइल में गुण बनाना:

कार्य बनाएँ:

  • एक शेल स्क्रिप्ट निष्पादित करें
  • पर्यावरण चर इंजेक्षन

जैसे: गुण परिभाषा

2) डाउनस्ट्रीम नौकरी के लिए परिभाषित गुण पास करना: पोस्ट बिल्ड कार्य:

  • अन्य प्रोजेक्ट पर ट्रिगर पैरामीटर निर्मित बिल्ड
  • पैरामीटर जोड़ें: वर्तमान बिल्ड पैरामीटर
  • पैरामीटर जोड़ें: पूर्वनिर्धारित पैरामीटर

जैसे: गुण भेजना

3) तब डाउनस्ट्रीम Rundeck जॉब में $ POM_VERSION का उपयोग करना संभव था।

/! \ Jenkins संस्करण: 1.636

/! \ किसी कारण से ट्रिगर निर्माण बनाते समय, गुणों को पारित करने के लिए विकल्प 'वर्तमान बिल्ड पैरामीटर' को जोड़ना आवश्यक था।


संपादित करें: मैंने जो कुछ लिखा था उसमें एक ब्लोपर मिला। गुणों की परिभाषा में, यह होना चाहिए था: गूंज POM_VERSION = $ POM_VERSION> play.properties और नहीं: echo $ POM_VERSION >> play.properties इसके बारे में क्षमा करें।
एली मूस

2

उत्तरों के माध्यम से पढ़ना, मुझे एक और विकल्प नहीं दिखता है जो मुझे पसंद है इसलिए मैं इसे भी पेश करूंगा। मुझे नौकरियों के मानकीकरण से प्यार है, लेकिन यह हमेशा अच्छा नहीं होता है। यदि आपके पास ऐसी नौकरियां हैं जो पहली नौकरी के सीधे बहाव में नहीं हैं, लेकिन पाइपलाइन से नीचे की ओर हैं, तो आप वास्तव में पाइपलाइन में हर नौकरी को पैरामीटर नहीं बनाना चाहते हैं ताकि सभी तरह से मापदंडों को पारित करने में सक्षम हो सकें। या यदि आपके पास विभिन्न प्रकार के अन्य नौकरियों (विशेष रूप से जो कि एक माता-पिता या मास्टर की नौकरी से बंधे नहीं हैं) द्वारा उपयोग किए जाने वाले मापदंडों की एक बड़ी संख्या है, तो फिर से पैरामीटराइजेशन काम नहीं करता है।

इन मामलों में, मैं मानों को गुण फ़ाइल में आउटपुट करने का पक्ष लेता हूं और फिर यह कहता हूं कि EnvInject प्लगइन का उपयोग करके मुझे जो भी नौकरी चाहिए । यह गतिशील रूप से किया जा सकता है, जो ऊपर दिए गए एक अन्य उत्तर से समस्या को हल करने का एक और तरीका है जहां अभी भी पैरामीटर वाली नौकरियों का उपयोग किया गया था। यह समाधान कई परिदृश्यों में बहुत अच्छा है।


1

ऐसा करने के लिए आप हडसन ग्रूवी बिल्डर का उपयोग कर सकते हैं ।

पहली नौकरी पाइपलाइन में

यहाँ छवि विवरण दर्ज करें

पाइपलाइन में दूसरी नौकरी

यहाँ छवि विवरण दर्ज करें


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