2012-05-01 20 views
12

हम CruiseControl.NET से जेनकींस की ओर पलायन कर रहे हैं सिर्फ एक साथी के साथ सिंक में होना करने के लिए तो हम दो अलग अलग सीआई स्क्रिप्ट नहीं है। हम क्या हम CruiseControl कर जो था एक केंद्रीकृत सर्वर दूरस्थ निर्माण मशीनों पर परियोजनाओं (जेनकींस में नौकरियों) आह्वान किया है था के लिए इसी तरह कुछ करने के लिए सेटअप जेनकींस करने की कोशिश कर रहे हैं।एक मास्टर जेनकींस दूरस्थ जेनकींस पर नौकरी दिखा सकता हूं?

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

CruiseCruise नियंत्रण हम सेटअप में एक परियोजना है कि दूरदराज के परियोजनाओं पर एक forceBuild करना होगा। निर्माण मशीनों पर परियोजनाओं संस्करण संख्या को पुनः प्राप्त करने तो वे सिंक में हमेशा थे एक remoteProjectLabeller इस्तेमाल किया।

<forcebuild> 
    <project>RemoteBuildMachineA</project> 
    <serverUri>tcp://remote-server:21234/CruiseManager.rem</serverUri> 
    <integrationStatus>Success</integrationStatus> 
</forcebuild> 

अब तक जेनकींस में मैं सेटअप जावा वेब शुरू का उपयोग कर एक दास के रूप में एक द्वितीयक सर्वर है:

<labeller type="remoteProjectLabeller"> 
    <project>MainProject</project> 
    <serverUri>tcp://central-server:21234/CruiseManager.rem</serverUri> 
</labeller> 

दूरस्थ परियोजनाओं को लागू करने के लिए:

मास्टर बिल्ड नंबर प्राप्त करने के लिए लेकिन मुझे नहीं पता कि कैसे मास्टर जेनकिंस गुलामों पर परियोजनाओं के सेटअप का आह्वान करेंगे।

मैं सेटअप जेनकींस दास पर परियोजनाओं (नौकरियों) को लागू करने की कर सकते हैं?

मैं दास गुरु से संस्करण संख्या खींच कर सकते हैं?

संपादित करें -

मुझे कुछ और अधिक जानकारी जोड़ें।

  • मास्टर, और दूरदराज के निर्माण मशीन दास सभी विंडोज चल रहे हैं।
  • हम एक ही समय तो वे समवर्ती भाग गया और जेनकींस यदि संभव हो तो साथ एक ही बात करना चाहते हैं पर दूरस्थ परियोजनाओं बंद केंद्रीय गुरु CruiseControl लात था। वहाँ एक मास्टर है कि निर्माण और दास है कि यह प्रदर्शन से चलाता है -

उत्तर

9

जेनकींस build agents की अवधारणा, जो शायद अपने परिदृश्य बेहतर फिट सकता है। एक का निर्माण तो केवल दास की कुछ श्रेणियों के लिए प्रतिबंधित किया जा सकता है (उदाहरण के लिए अगर यह एक विशिष्ट सॉफ्टवेयर पर निर्भर करता है, सभी एजेंटों पर मौजूद नहीं)। सभी डेटा मास्टर द्वारा केंद्रीय रूप से प्रबंधित किया जाता है, जो मुझे विश्वास है कि आप जो हासिल करने की कोशिश कर रहे हैं।

+0

+1 हाँ मैं क्रूज़ कंट्रोल मानसिकता में कॉन्फ़िगरेशन के बारे में सोच रहा था। धन्यवाद। –

5

जेनकींस में यह एक गुलाम है, यानी रन जहां निर्माण एक है जो यह चलाता है द्वारा नियंत्रित नहीं है पर एक निर्माण को गति प्रदान करने के लिए संभव नहीं है। यह नौकरी की सेटिंग्स से ही नियंत्रित होता है। प्रत्येक नौकरी में एक सेटिंग होती है जिसे "यह काम कहां चलाया जा सकता है प्रतिबंधित करें"।

आपके मामले में आप शायद दो नौकरियां होगा: ए और बी ए 'slavename "पर चलाने के लिए कॉन्फ़िगर कर दिया जाएगा" मास्टर "और बी पर चलाने के लिए प्रतिबंधित कर दिया जाएगा। फिर उन सभी को छोड़ दिया जाता है जो ए को ट्रिगर करने के लिए बी

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

मौजूदा फ्री-स्टाइल नौकरी को बहु-कॉन्फ़िगरेशन नौकरी में बदलने का कोई तरीका नहीं है, इसलिए आपको एक नया काम करना होगा।

  • नई नौकरी
  • चुनें बिल्ड नई बहु-विन्यास परियोजना का चयन करें। एक नाम जोड़ें
  • कॉन्फ़िगरेशन मैट्रिक्स के तहत, "अक्ष जोड़ें" ड्रॉप डाउन खोलें।
  • चुनें गुलाम
  • चेक स्वामी और गुलाम
  • एससीएम जानकारी जोड़ें और कदम (रों)

जब काम चलता है, यह दोनों स्वामी और गुलाम पर चलता है निर्माण। जेनकींस सुनिश्चित करता है कि वे एक ही स्रोत संस्करण से बनाते हैं।

+2

* जेनकिंस में दास पर एक निर्माण को ट्रिगर करना संभव नहीं है, यानी जहां एक बिल्ड रन इसे ट्रिगर करने वाले व्यक्ति द्वारा नियंत्रित नहीं होता है * - यह 100% सही नहीं है। आप [नोड लेबल पैरामीटर प्लगइन] (https://wiki.jenkins-ci.org/display/JENKINS/NodeLabel+Parameter+Plugin) के साथ पैरामीटर के रूप में नोड लेबल निर्दिष्ट कर सकते हैं और फिर उस पैरामीटर के मान का उपयोग करें * जहां प्रतिबंधित करें यह नौकरी * फ़ील्ड चला सकती है। –

+0

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

+0

@AndyArismendi, क्या आप निश्चित हैं? नौकरी पर जाएं, अंतिम निर्माण का चयन करें। यह आपके बच्चे के निर्माण से संबंधित छोटी गेंदों को दिखाएगा (शायद केवल एक, यदि आपके पास केवल एक बच्चा है, तो यह इसके आगे 'डिफ़ॉल्ट' कहेंगे)। स्थिति के आधार पर गेंदें नीली, लाल, या भूरे रंग की होंगी। गैर-ग्रे गेंदों में से एक पर क्लिक करें। यह आपका बच्चा निर्माण की स्थिति है। बच्चे को दास 'बी 'पर चलाना चाहिए। दूसरी तरफ, शीर्ष-स्तर की नौकरी कहीं भी चल सकती है (जब तक कि मैट्रिक्स टाई पैरेंट प्लिन के साथ नोड से बंधे हों)। –

0

/जेनकींस/कंप्यूटर यूआरएल से, आप "नोड्स" को जोड़, हटा सकते हैं और फिर से कॉन्फ़िगर कर सकते हैं जो स्थानीय या दूरस्थ "बिल्ड एजेंट" हैं।

नौकरियों को तब विशेष बिल्ड एजेंटों पर चलाने के लिए बाध्य किया जा सकता है, या उपलब्ध एजेंटों के उचित बिल्ड एजेंट का चयन करने के लिए विभिन्न नियमों का पालन किया जा सकता है।

+0

मुझे खेद है, लेकिन ऐसा लगता है कि आप पिछले उत्तरों में पहले से ही प्रदान किए गए कुछ भी नया नहीं कह रहे हैं। –

0

मैं जेनकिंस के बारे में सोच रहा था क्रूज़ कंट्रोल की तरह जहां रिमोट मशीन पर नौकरी परिभाषित की गई है। तो जेनकींस में दूरस्थ परियोजनाओं को मास्टर पर परिभाषित किया गया है और एक एजेंट के माध्यम से एक दूरस्थ मशीन को सौंपा गया है।

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

एक मास्टर मास्टर जॉब के साथ नौकरियों को ट्रिगर करने के लिए मैंने एक निःशुल्क स्टाइल जॉब बनाया जो केवल "अन्य परियोजनाओं का निर्माण" पर सेट है और एक अल्पविराम से अलग सूची या परियोजना नाम प्रदान करता है। यह नौकरी समानांतर में डाउनस्ट्रीम नौकरियां बनाती है।

मैं अभी भी डाउनस्ट्रीम नौकरियों में मास्टर बिल्ड नंबर भेजने के लिए एक रास्ता तलाश रहा हूं ताकि उन्हें हमेशा सिंक में रखा जा सके। (इसका उपयोग संस्करण डीएलएल और इस तरह किया जाता है।)

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