ऐसा लगता है कि जेनकिन्सफाइल को बहु-कॉन्फ़िगरेशन प्रोजेक्ट में बिल्डस्टेप के रूप में रखना संभव नहीं है। एक जेनकिन्सफाइल का उपयोग पाइपलाइन नौकरी में किया जाता है जो कि नौकरी के प्रकार के रूप में है और जेनकींस जॉबटाइप के बीच (आसान) रूपांतरण का समर्थन नहीं करता है। इसके अलावा, एक बिल्डस्टेप का तात्पर्य है कि यह किसी निष्पादक स्लॉट में किसी विशेष नोड पर चलाया जाता है। हालांकि जेनकिन्सफाइल का मूल्यांकन मास्टर पर किया जाता है और स्वयं बिल्डस्टेप्स (उनके नोड लेबल के साथ) को परिभाषित करता है जो अंतर्निहित रूप से संघर्ष करेगा यदि यह बिल्डस्टेप में ही चलाया जाता है।
बहु-कॉन्फ़िगरेशन नौकरी के माध्यम से पाइपलाइन को ट्रिगर करना और बहु-कॉन्फ़िगरेशन नौकरी के पैरामीटर के साथ इसकी आपूर्ति करना संभव है। (मैं भी पैरामिट्रीकृत ट्रिगर प्लगइन का इस्तेमाल किया यह करने के लिए)
मेरे पाइपलाइन काम दो पाठ पैरामीटर, label
और version
एक उदाहरण Jenkinsfile कि इस तरह दिखता है के साथ है:
node(this.label){
println this.version
}
मेरे बहु विन्यास नौकरी है निम्नलिखित विन्यास:
- मूल्यों
alpha beta gamma
साथ version
अक्ष एक कस्टम और label
अक्ष एक गुलाम एक चयनित नोड के साथ
- buildstep "उत्प्रेरक/कॉल अन्य परियोजनाओं पर बनाता है" पूर्वनिर्धारित मानकों
version=${version}
और label=${label}
इस सेटअप पाइपलाइन काम के लिए 3 बार बुलाया जा रहा है की ओर जाता है के साथ अपने पाइपलाइन काम को गति प्रदान करने के लिए (के रूप में मैं केवल एक नोड चयनित) , प्रत्येक बार एक अलग संस्करण के साथ और मेरे निर्दिष्ट लेबल पर चल रहा है। यहाँ लॉग में से एक है:
[Pipeline] node
Running on master in /var/lib/jenkins/jobs/pipelinejob/workspace
[Pipeline] {
[Pipeline] echo
gamma
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
यह समाधान काम करता है अगर आप केवल पाठ आधारित मानकों या लेबल का नाम पास करना चाहते हैं। यदि आप "अलग-अलग jdks के साथ निर्माण" करना चाहते हैं तो इसका उपयोग करना काफी कठिन होगा। मुझे उम्मीद है कि यह अभी भी सहायक है।
बकाया का पुरस्कार आम तौर पर इसका मतलब है कि आपको जवाब भी स्वीकार करना चाहिए। – rbellamy