2016-10-11 11 views
10

में शैल चरण के भीतर से एक ग्रोवी वैरिएबल तक पहुंचें Pipeline plugin in Jenkins 2.x का उपयोग करके, मैं sh चरण के भीतर चरण-या नोड-स्तर पर कहीं भी परिभाषित ग्रोवी चर का उपयोग कैसे कर सकता हूं?जेनकिंस पाइपलाइन

सरल उदाहरण:

node { 
    stage('Test Stage') { 
     some_var = 'Hello World' // this is Groovy 
     echo some_var // printing via Groovy works 
     sh 'echo $some_var' // printing in shell does not work 
    } 
} 

जेनकींस उत्पादन पृष्ठ पर निम्न देता है:

[Pipeline] { 
[Pipeline] stage 
[Pipeline] { (Test Stage) 
[Pipeline] echo 
Hello World 
[Pipeline] sh 
[test] Running shell script 
+ echo 

[Pipeline] } 
[Pipeline] // stage 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
Finished: SUCCESS 

एक देख सकते हैं, echosh कदम में एक खाली स्ट्रिंग प्रिंट करता है।

एक काम के आसपास के माध्यम से

env.some_var = 'Hello World' 

पर्यावरण दायरे में चर को परिभाषित करने और के माध्यम से

sh 'echo ${env.some_var}' 

हालांकि, गाली के इस प्रकार इस कार्य के लिए पर्यावरण गुंजाइश इसे प्रिंट होगा।

+1

की संभावित डुप्लिकेट [क्या ग्रूवी में एकल या डबल उद्धरण के भीतर तार के अंतर है?] (Http://stackoverflow.com/questions/6761498/whats-the-difference-of-strings-within-single -या-डबल-कोट्स-इन-ग्रोवी) –

+1

बिल्कुल एक डुप्लिकेट नहीं है, लेकिन मुझे लगता है कि यह सही उद्धरणों का उपयोग करने का एक साधारण मामला है। आपके द्वारा लिंक किए गए पृष्ठ में दिए गए उदाहरण डबल कोट्स का उपयोग करते हैं: https://jenkins.io/doc/book/pipeline/overview/#basic-groovy-syntax-for-pipeline-configuration –

+0

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

उत्तर

10

एक टेम्पलेट करने योग्य स्ट्रिंग का उपयोग करने के लिए, जहां चर को स्ट्रिंग में प्रतिस्थापित किया जाता है, डबल कोट्स का उपयोग करें।

sh "echo $some_var" 
संबंधित मुद्दे