2016-09-17 5 views
17

मैं समझने की कोशिश कर रहा हूं कि मेरी जेनकींस 2.7 पाइपलाइन ग्रोवी स्क्रिप्ट को कैसे व्यवस्थित किया जाए। मैंने pipeline tutorial के माध्यम से पढ़ा है, लेकिन मुझे लगता है कि यह इन विषयों पर अधिक विस्तार कर सकता है।जेनकींस पाइपलाइनों में नोड, चरण और चरण के बीच क्या अंतर है?

मैं समझ सकता हूं कि एक पाइपलाइन में stage एस हो सकते हैं और प्रत्येक stage में कई step एस हो सकते हैं। लेकिन step(); और stage के अंदर एक विधि कॉल के बीच अंतर क्या है, sh([script: "echo hello"]); कहें। nodestage एस के अंदर या बाहर होना चाहिए? क्या नौकरी की कुल संपत्ति node के अंदर या बाहर होनी चाहिए?

#!/usr/bin/env groovy 

node('master') { 
    properties([ 
     [$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '10']] 
    ]); 

    stage 'Checkout' 
     checkout scm 

    stage 'Build' 
     sh([script: "make build"]); 

    archive("bin/*"); 
} 

उत्तर

4

यह निर्भर करता है:

यहाँ एक ubuntu मास्टर नोड पर मेरे वर्तमान संरचना है। कोई भी node घोषणा एक निष्पादक आवंटित करता है (जेनकींस मास्टर या गुलाम पर)। इसके लिए आपको stash और unstash वर्कस्पेस की आवश्यकता है, क्योंकि किसी अन्य निष्पादक के पास चेक आउट स्रोत उपलब्ध नहीं हैं।

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

stage("Checkout") { 
    checkout scm 
} 

stage("Build") { 
    node('linux') { 
    sh "make" 
    } 
    node('windows') { 
    bat "whatever" 
    } 
} 

stage("Upload") { 
    ... 

एक और (शायद अधिक यथार्थवादी उदाहरण) parallel में एक से अधिक नोड्स आवंटित करने के लिए किया जाएगा। इसके बाद stage कॉल को अन्य आवंटित निष्पादक (node के भीतर उर्फ) में निष्पादित करने की आवश्यकता नहीं है।

आपका उदाहरण मेरे लिए अच्छा लग रहा है। सिंगल stage एस के भीतर एकाधिक node एस आवंटित करने की आवश्यकता नहीं है, क्योंकि यह केवल अतिरिक्त ओवरहेड होगा।

15

node, stage और step की अवधारणाओं अलग हैं:

  • nodeजहां कुछ होता जाएगा निर्दिष्ट करता है। आप एक नाम या लेबल देते हैं, और जेनकिन्स वहां ब्लॉक चलाता है।

  • stage संरचनाओं एक उच्च स्तरीय अनुक्रम में अपनी स्क्रिप्ट। चरण चरण के लिए औसत चरण के समय और रंगों के साथ पाइपलाइन चरण दृश्य में कॉलम के रूप में दिखाई देते हैं।

  • stepनिर्दिष्ट करने का एक तरीका है क्या होगा। sh समान गुणवत्ता का है, यह एक अलग तरह की क्रिया है। (आप भी चीजें हैं जो पहले से ही परियोजनाओं के रूप में निर्दिष्ट कर रहे हैं के लिए build उपयोग कर सकते हैं।)

तो step रों node रों भीतर निवास कर सकते हैं, (अगर वे नहीं हैं, वे गुरु को फांसी दे रहे हैं), और node रों और step एस को stage एस के साथ एक समग्र अनुक्रम में संरचित किया जा सकता है।

+0

क्या आखिरी शब्द 'मंच' होना था? – IronSean

+0

हाँ, आप सही हैं। –

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