2016-05-04 8 views
20

मैं एकीकृत वितरण पाइपलाइन सुविधा (https://jenkins.io/solutions/pipeline/) के साथ जेनकींस v2.1 का उपयोग कर रहा हूं ताकि दो मौजूदा बिल्ड (निर्माण और तैनाती) को व्यवस्थित किया जा सके।डाउनस्ट्रीम नौकरियों के लिए पाइपलाइन पास पैरामीटर

मेरे पैरामीटरयुक्त बिल्ड में मेरे पास 3 उपयोगकर्ता पैरामीटर सेटअप हैं, जिन्हें पाइपलाइन में चयन करने योग्य भी है।

node: { 
    stage 'build' 
    build job: 'build', parameters: [[$class: 'StringParameterValue', name: 'target', value: target], [$class: 'ListSubversionTagsParameterValue', name: 'release', tag: release], [$class: 'BooleanParameterValue', name: 'update_composer', value: update_composer]] 

    stage 'deploy' 
    build job: 'deploy', parameters: [[$class: 'StringParameterValue', name: 'target', value: target]] 
} 

यह BooleanParameterValue को छोड़कर सही ढंग से काम करता है:

पाइपलाइन स्क्रिप्ट इस प्रकार है। जब मैं पाइपलाइन बनाता हूं तो निम्न त्रुटि फेंक दी जाती है:

java.lang.ClassCastException: hudson.model.BooleanParameterValue.value expects boolean but received class java.lang.String 

मैं इस टाइपकास्टिंग त्रुटि को कैसे हल कर सकता हूं? या इससे भी बेहतर, क्या एक कम बोझिल तरीका है जिसमें मैं डाउनस्ट्रीम नौकरी के लिए सभी पाइपलाइन पैरामीटर को पास कर सकता हूं।

+0

मैं कैसे उपयोग करने के लिए कर रहा हूँ मेरी बहाव के काम में उन्हें (उदा 'लक्ष्य' का मूल्य प्रिंट)? –

उत्तर

16

मान लिया जाये कि

value: update_composer 

मुद्दा था, कोशिश

value: Boolean.valueOf(update_composer) 

वहाँ एक कम बोझिल जिस तरह मैं सिर्फ नीचे की ओर काम

लिए सभी पाइप लाइन पैरामीटर पास कर सकते हैं

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

+0

आपके उत्तर के लिए धन्यवाद। जब मैं काम पर वापस आऊंगा तो मैं इस अगले सोमवार को आजमाउंगा। अभी कुछ दिन दूर है। –

+6

आपका उत्तर मेरे लिए काम करता है। ग्रोवी डॉक्स पढ़ने पर मुझे एक छोटा रास्ता भी मिला। 'update_composer.toBoolean() 'भी काम करता है। –

+2

@BramGerritsen टिप्पणी के लिए +1 - यह मेरे लिए ग्रोवी सैंडबॉक्स में भी काम करता था, जबकि 'Boolean.valueOf' नहीं था :) –

12

Jesse Glick जवाब देने के लिए इसके अलावा, यदि आप स्ट्रिंग पैरामीटर पास करना चाहते हैं तो का उपयोग करें:

build job: 'your-job-name', 
    parameters: [ 
     string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)), 
     string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER)) 
    ] 
+5

' बिल्ड जॉब: 'तैनाती', पैरामीटर: [बूलियन पैराम (नाम: 'लक्ष्य', मूल्य : लक्ष्य)] 'बूलियन पैरामीटर के लिए समकक्ष वाक्यविन्यास है –

+0

यह केवल नए जेनकींस के लिए काम करता प्रतीत होता है, https://issues.jenkins-ci.org/browse/JENKINS-27295 देखें –

0

जेसी Jesse Glick और abguy की तरह कहा था कि आप बूलियन में स्ट्रिंग की गणना कर सकते हैं:

Boolean.valueOf(string_variable) 

या स्ट्रिंग में बूलियन के विपरीत:

String.valueOf(boolean_variable) 

मेरे मामले में मुझे एक अन्य नौकरी के लिए बूलियन पैरामीटर को डाउनस्ट्रीम करना पड़ा। तो इस के लिए आप उपयोग वर्ग BooleanParameterValue की आवश्यकता होगी:

build job: 'downstream_job_name', parameters: 
[ 
[$class: 'BooleanParameterValue', name: 'parameter_name', value: false], 
], wait: true 
संबंधित मुद्दे