2016-04-04 4 views
18

मैं एक बहु-कॉन्फ़िगरेशन प्रोजेक्ट बनाने की कोशिश कर रहा हूं जो एक संगतता मैट्रिक्स को परिभाषित करता है (उदाहरण के लिए ब्राउज़र और ओएस) को परिभाषित करता है। मैं Jenkinsfile के माध्यम से एक संयोजन के लिए चरणों को परिभाषित करना चाहता हूं।जेनकिन्सफाइल (बिल्ड पाइपलाइन प्लगइन) के साथ मल्टी-कॉन्फ़िगरेशन प्रोजेक्ट का उपयोग करना

मैं इसे कैसे प्राप्त कर सकता हूं? मैं एक पाइपलाइन पैरामीटरयुक्त बिल्ड बना सकता हूं जो जेनकिन्सफाइल पर निर्भर करता है लेकिन मैं यह नहीं समझ सकता कि इसे बहु-कॉन्फ़िगरेशन बिल्ड से कैसे कनेक्ट किया जाए।

+0

बकाया का पुरस्कार आम तौर पर इसका मतलब है कि आपको जवाब भी स्वीकार करना चाहिए। – rbellamy

उत्तर

4

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

बहु-कॉन्फ़िगरेशन नौकरी के माध्यम से पाइपलाइन को ट्रिगर करना और बहु-कॉन्फ़िगरेशन नौकरी के पैरामीटर के साथ इसकी आपूर्ति करना संभव है। (मैं भी पैरामिट्रीकृत ट्रिगर प्लगइन का इस्तेमाल किया यह करने के लिए)

मेरे पाइपलाइन काम दो पाठ पैरामीटर, 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 के साथ निर्माण" करना चाहते हैं तो इसका उपयोग करना काफी कठिन होगा। मुझे उम्मीद है कि यह अभी भी सहायक है।

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