2017-02-03 4 views
6

मेरे पास एक पाइपलाइन नौकरी है जो दो अलग-अलग नोड्स (एक निर्माण के लिए एक, परीक्षण के लिए) का उपयोग करती है, और मैं अपने Jenkinsfile में कोड के इन दो ब्लॉक के बीच एक चर साझा करना चाहता हूं। मुझे लगता है कि यह संभव है, लेकिन मैं groovy और Jenkinsfile अवधारणा के लिए बहुत नया हूँ। यहाँ प्रासंगिक कोड अब तक है:जेनकिन्सफाइल चर दो अलग-अलग चरणों में उपयोग किया जाता है

node('build') { 
    stage('Checkout') { 
     checkout scm 
    } 
    stage('Build') { 
     bat(script: 'build') 
     def rev = readFile('result') 
    } 
} 

node('test') { 
    stage('Test') { 
      def SDK_VERSION = "5.0.0001.${rev}" 
      bat "test.cmd ${env.BUILD_URL} ${SDK_VERSION}" 
      archiveArtifacts artifacts: 'artifacts/**/*.xml' 
      junit 'artifacts/**/*.xml' 
     } 
} 

मैं निर्माण के चरण में "द रेव" चर निर्दिष्ट है, लेकिन फिर टेस्ट चरण में SDK_VERSION चर करने के लिए इसे जोड़ करना चाहते हैं। मेरे त्रुटि है:

groovy.lang.MissingPropertyException: No such property: rev for class: groovy.lang.Binding 
+1

मुझे लगता है कि आप बस '' डीईएफ़ राजस्व = "" 'के साथ अपने' node' ब्लॉक के बाहर rev' निर्धारित कर सकते हैं। फिर यह वैश्विक संदर्भ में है और आपके 'नोड' ब्लॉक के अंदर उपयोग किया जा सकता है। – fishi

+0

मैं सोच रहा था कि इसे वैश्विक बनाने के लिए कुछ तरीका होना चाहिए, लेकिन हर बार जब मैंने इसे देखा, तो संसाधनों ने वैश्विक पर्यावरण चर स्थापित करने की ओर इशारा किया। मैं यह भी सुनिश्चित करना चाहता था कि मैं इसे सही तरीके से उपयोग कर रहा हूं। धन्यवाद! – user3270760

उत्तर

8

बस अपने node ब्लॉक से पहले चर को परिभाषित:

def rev = '' 
node('build') { 
    stage('Checkout') { 
    checkout scm 
    } 
    stage('Build') { 
    bat(script: 'build') 
    rev = readFile('result') 
    } 
} 
संबंधित मुद्दे