2012-04-12 12 views
20

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

यह समान है, लेकिन समान नहीं है, How to prevent certain Jenkins jobs from running simultaneously? अंतर यह है कि मेरे पास "धागे की संख्या" समस्या नहीं है - मैं पहले से ही किसी भी समय किसी भी परियोजना के अधिकांश थ्रेड पर चल रहा हूं , यहां तक ​​कि उस मामले में जहां दो (अलग-अलग परियोजना) एक-दूसरे के साथ चिपक जाती है। ऐसा लगता है कि उस थ्रेड में कई सारे सुझावों को रद्द कर दिया गया है।

+0

ताले और प्लगइन सवाल आप उद्धृत यहाँ भी काम करना चाहिए के जवाब में उल्लेख किया सिटकनी। –

+1

ताले और सिटकनी मेरे मामले के लिए काम करता है, लेकिन यह [ "संभावित प्रतिवाद" सूची] पर है (https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation)। यदि इसे बहिष्कृत किया जाता है, तो नया [बहिष्करण-प्लगइन] (https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin) जैसा दिखता है मेरे लिए काम करेगा (और [थ्रॉटल समवर्ती बिल्ड] (https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+builds+Plugin) दूसरे के लिए, गिनती, केस)। – jackr

उत्तर

21

Locks and Latches plugin आपकी समस्या का समाधान करना चाहिए। लॉक बनाएं और दोनों नौकरियां एक ही लॉक का उपयोग करें। इससे नौकरियों को एक साथ चलने से रोका जा सकेगा।

  1. "जेनकिन्स प्रबंधित करें: प्लगइन्स प्रबंधित करें" में प्लगइन स्थापित करें।
  2. "जेनकिन्स प्रबंधित करें: सिस्टम कॉन्फ़िगर करें" में अपने लॉक (ओं) को परिभाषित करें (इसके लिए नाम दें)।
  3. हर काम आप बहिष्कार में भाग लेने के लिए,
      में
    1. ": कॉन्फ़िगर: पर्यावरण का निर्माण," "ताले" जाँच,
    2. और ड्रॉप सूची से अपने लॉक नाम चुनें।
+0

यहां पूरा समाधान है, क्योंकि यह मुझे थोड़ा सा शोध और फ़्लेलिंग लेता है: – jackr

+2

"जेनकिन्स प्रबंधित करें: प्लगइन्स प्रबंधित करें" में प्लगइन इंस्टॉल करें। "जेनकिन्स प्रबंधित करें: सिस्टम कॉन्फ़िगर करें" में अपने लॉक (ओं) को परिभाषित करें (नाम दें)। प्रत्येक नौकरी के लिए आप बहिष्कार में भाग लेना चाहते हैं, ": कॉन्फ़िगर करें: पर्यावरण बनाएं," "ताले" की जांच करें, और ड्रॉप सूची से अपना लॉक नाम चुनें। – jackr

+1

@jackr इसे पूरा करने के लिए आपको इस टिप्पणी में अपनी टिप्पणी संपादित करनी चाहिए! – chown

4

संपादित करें: नीचे दी गई जानकारी 04/10/2014

बहिष्करण प्लगइन, https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin बहुत उपयोगी कुछ का निर्माण एक ही संसाधन का उपयोग करता है, तो के रूप में प्रभावी है - जैसे एक परीक्षण डेटाबेस। आपको बस इतना करना है कि इस संसाधन का उपयोग करके सभी नौकरियों की कॉन्फ़िगरेशन अपडेट करें और नतीजतन वे समानांतर में कभी नहीं चलेंगे लेकिन दूसरों को पूरा करने की प्रतीक्षा करें।

से लिया: http://www.kaczanowscy.pl/tomek/2012-07/jenkins-plugins-part-iii-towards-continuous-delivery

साथ में चल रहे से दो या अधिक नौकरियों ब्लॉक इस प्लगइन है।
परीक्षण करने के लिए,

  • के तहत वातावरण का निर्माण जाँच job1 लिए यह कर

    1. कॉन्फ़िगर "संसाधन बहिष्कार का प्रबंधन करने के जोड़ें।"
    2. तब जोड़ें -> नया संसाधन -> नाम -> ताला
    3. बिल्ड के तहत -> जोड़ें निर्माण कदम
    4. क्रिटिकल ब्लॉक प्रारंभ
    5. निर्माण कदम जोड़ें -> जो कुछ भी आप जोड़ना चाहते हैं जोड़ें। (यकीन है कि यह लंबे समय तक रहता संगामिति जाँच करने के लिए बनाने के लिए नींद 15 जोड़ें।)
    6. जोड़ें निर्माण कदम -> गंभीर ब्लॉक अंत
    7. दोहराएँ job2 के लिए ऊपर दिए गए चरणों, सुनिश्चित करें कि आप एक ही ताला नाम 'लॉक' का उपयोग करते हैं।
    8. मैन्युअल रूप से दोनों नौकरियों को मैन्युअल रूप से निर्मित करते हैं। > बहिष्करण प्रशासन -
    9. जेनकींस के तहत रन प्रगति की निगरानी।
  • 4

    Lockable Resources Plugin। सरल और मेरे लिए अच्छी तरह से काम कर रहे 2016

    प्लग-इन इंस्टॉल कर सकते हैं। जेनकींस प्रबंधित करें> सिस्टम कॉन्फ़िगर करें लॉक करने योग्य संसाधन प्रबंधक पर जाएं।
    लॉक करने योग्य संसाधन जोड़ें का चयन करें। फ़ील्ड के लिए मान दर्ज करें: नाम और हिट सहेजें। चेतावनी: नाम फ़ील्ड में रिक्त स्थान दर्ज न करें।

    जेनकींस में>जॉब_नाम> कॉन्फ़िगर करें> सामान्य, चेकबॉक्स का चयन करें: इस बिल्ड को लॉक करने योग्य संसाधनों की आवश्यकता है। फ़ील्ड के लिए मूल्य में नाम या नाम दर्ज करें: संसाधन।

    निर्माण शुरू करो। बिल्ड के तहत # संख्या लॉक संसाधन का चयन करें। इस निर्माण के लिए निम्न संसाधन बंद कर दिया गया है:: - resource_descriptionRESOURCE_NAME तुम कुछ की तरह देखना चाहिए।

    जो एक ही संसाधन का उपयोग करता है एक अलग निर्माण शुरू करो। आप जेनकिंस स्थिति/मेनू में बिल्ड कतार देखेंगे जो नौकरी का नाम दिखा रहा है। होवर टेक्स्ट शो द्वारा संसाधनों की प्रतीक्षा कर रहा है, संसाधनों की प्रतीक्षा संसाधन_सूची, समय की प्रतीक्षा कर रहा है।

    (भी संसाधन टैग/लेबल का उपयोग किया जा सकता है)

    +0

    अच्छी प्लगइन लेकिन मुझे जेनकींस में नहीं दिख रहा है> job_name> कॉन्फ़िगर करें> सामान्य, चेकबॉक्स का चयन करें: इस बिल्ड को लॉक करने योग्य संसाधनों की आवश्यकता है। फ़ील्ड के लिए मूल्य में नाम या नाम दर्ज करें: संसाधन। पाइपलाइन नौकरी के लिए। क्या कोई काम आसपास है? –

    +0

    क्या आप वर्णन कर सकते हैं कि आपकी समस्या क्या अधिक विस्तार से है? क्या आप देखते हैं "इस बिल्ड को लॉक करने योग्य संसाधनों की आवश्यकता है"? क्या आपके पास प्लगइन स्थापित है? – gaoithe

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