2012-10-16 15 views
5

मैं 4 नौकरियों जो जरूरत निम्न क्रमजेनकींस समानांतर उत्प्रेरक और रुको

JOB A 
|------> JOB B 
|------> JOB C 
      |------> JOB D 

में क्रियान्वित किया जाना है इसके बाद के संस्करण

  1. एक बी उत्प्रेरित करने चाहिए & सी parallely और सी inturn डी से चलाता में
  2. ए को नौकरी को तब तक चलाना चाहिए जब तक कि उनमें से सभी 3 पूरा नहीं हो जाते।

मैं निम्न प्लग-इन की कोशिश की और लक्ष्य को हासिल नहीं कर सका मैं

  • के लिए क्या देख रहा हूँ प्लगइन
  • Multijob प्लगइन
  • बहु विन्यास परियोजना
  • Paramterized उत्प्रेरक प्लगइन
शामिल हों

क्या कोई प्लगइन है I कोशिश नहीं की है इसे हल करने में मेरी मदद करेगा। या यह एक अलग तरीके से हासिल किया जा सकता है। कृपया सलाह दें।

उत्तर

1

Locks and Latches plugin आज़माएं।

+0

[इसका शीघ्र ही हटा दिया करने के लिए] (https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation)। किसी भी तरह से मुझे यह काम करने के तरीके पर कोई दस्तावेज नहीं मिला? क्या तुम्हारे पास कुछ है? – raksja

+0

देखा [यह] (http://stackoverflow.com/a/6279210/150371) लेकिन यह भी पता नहीं लगा सकता कि ताला कैसे जारी किया जाए, आदि – raksja

1

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

यह वास्तव में इष्टतम नहीं है हालांकि: जॉब ए को बी और सी समाप्त होने के लिए खुली प्रतीक्षा की जाती है। फिर सी समाप्त होने तक सी खुला रहता है।

क्या कोई कारण है कि जॉब ए को अवधि के लिए चलने की जरूरत है? एक अन्य संभावना है कि बी और सी शुरू होने के बाद जॉब ए समाप्त हो जाए, लेकिन जॉब ए पर एक प्रचार है जो बी, सी और डी सफल होने के बाद आपके अंतिम कार्यों को निष्पादित करेगा।

+0

आपके सुझाव @ जेसन के लिए धन्यवाद। मुझे लगता है कि मैंने पहले से ही इस दृष्टिकोण की कोशिश की है। लेकिन यहां समस्या यह है कि मुझे बी और सी के पैरामीटर के 2 अलग-अलग सेटों को पारित करने की आवश्यकता है। बी के लिए यह नोड को चलाने के लिए है (नोडेलबेल प्लगइन का उपयोग करके) और गुणों के सी सेट के लिए। पैरामीटरेटेड ट्रिगर प्लगइन में पैरामीटर के 2 अलग-अलग सेट के साथ 2 नौकरियों को ट्रिगर करने के लिए पैरामीटरेटेड ट्रिगर प्लगइन में कोई विकल्प नहीं है ._ :( – raksja

1

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

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

गैर मैं अंत में यह इन Plugins-

का उपयोग कर प्राप्त करने में सक्षम था
  • पाइपलाइन का निर्माण
  • MultiJob प्लगइन
  • फिंगरप्रिंट प्लगइन
  • कॉपी कलाकृतियों
  • PLUGIN प्लगइन
  • में शामिल हों

मैं जेनकींस 1,514

प्रणाली का उपयोग कर रहा इस

उत्प्रेरक नौकरी की तरह दिखता है -> निर्माण (और तैनात) नौकरी (1..n) ---> टेस्ट नौकरी (1 .. एन)

उत्प्रेरक नौकरी -

  • MultiJob के रूप में बना सकते हैं और खोल कार्यकारी में एक फिंगरप्रिंट फ़ाइल बनाने

    गूंज date +%s> fingerprint.txt

चाल, कि फ़ाइल निर्माण दौरान संग्रहीत किए जाने की जरूरत है कि निष्पादित इस script-

ARCHIVEDIR=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive 
mkdir $ARCHIVEDIR 
cp fingerprint.txt $ARCHIVEDIR 
  • बनाएं MultiJob चरण से मिलकर करने के लिए नौकरी का निर्माण/तैनाती
  • बिल्ड/तैनात काम अपने आप में एक multijob
  • निर्माण/रिश्तेदार फिंगरप्रिंटिंग के लिए ऊपर के रूप में काम की तैनाती बनाने के लिए एक ही चरणों का पालन है।
  • कॉपी नदी के ऊपर नौकरी से fingerprint.txt विरूपण साक्ष्य
  • तैनाती काम में
  • सेटअप MultiJob चरण है कि परीक्षण काम
  • एक नया फिंगरप्रिंट फ़ाइल बनाने और बल यह ऊपर चरण के लिए इसी तरह संग्रह के
  • में कलेक्ट JUnit परिणाम से चलाता है अंतिम परीक्षण नौकरी।


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

+0

एक सतत डिलिवरी पाइपलाइन के लिए एक दिलचस्प समाधान की तरह लगता है। अगर कोई आसान तरीका नहीं है तो आश्चर्य की बात है। – vezenkov

1

Multijob प्लगइन

आप नीचे की ओर/नदी के ऊपर नौकरियों चेन परिभाषा के साथ गड़बड़ को रोकने के लिए चाहते हैं। या जब आप जेनकींस नौकरियों का पूर्ण पदानुक्रम जोड़ना चाहते हैं जो अनुक्रम या समानांतर में निष्पादित किया जाएगा। मल्टीजोब से अपने सभी चरणों और नौकरियों में अपने बिल्डफ्लो कार्यान्वयन पैरामीटर विरासत में संदर्भ जोड़ें। चरण क्रमिक होते हैं जबकि प्रत्येक चरण के अंदर नौकरियां समानांतर होती हैं।

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

+0

यह प्लगइन समांतर/धारावाहिक कार्यों के प्रबंधन के लिए भी उपयोगी हो सकता है: [https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin] –

+0

यह कुछ विचार भी दे सकता है: [http: // stackoverflow .com/प्रश्न/4510640/कमांड लाइन-क्या-है-प्रयोजन-की] –

2

उपयोग डीएसएल स्क्रिप्टसाथ फ्लो प्लगइन का निर्माण करें।

अपने निष्पादन के लिए इस उदाहरण का प्रयास करें:

build("job A") 

    parallel 
    (
     {build("job B")} 
     {build("job C")} 
    ) 

    build("job D") 
संबंधित मुद्दे