Pipeline plugin in Jenkins 2.x'u kullanarak, sh
adımından aşama veya düğüm düzeyinde bir yerde tanımlanmış bir Groovy değişkenine nasıl erişebilirim?Jenkins boruhattında Kabuk adımından bir Groovy değişkenine erişme
Basit bir örnek:
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
}
}
Jenkins çıkış sayfasında aşağıdaki verir: sh
adımda
[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
biri görebileceğiniz gibi, echo
boş bir dize yazdırır.
Bir iş çevresinde
env.some_var = 'Hello World'
yoluyla ortam kapsamında değişken tanımlamak ve Ancak
sh 'echo ${env.some_var}'
, suiistimal bu tür bu görev için çevre kapsamı aracılığıyla yazdırmak olacaktır.
Olası yinelenen [harika tek veya çift tırnak içinde dizeleri farkı nedir?] (Http://stackoverflow.com/questions/6761498/whats-the-difference-of-strings-within-single -ve-çift-tırnak-in-groovy) –
Tam olarak bir kopya değil, ama doğru tırnak kullanmanın basit bir konu olduğunu düşünüyorum. Bağladığınız sayfada verilen örnekler çift tırnak kullanır: https://jenkins.io/doc/book/pipeline/overview/#basic-groovy-syntax-for-pipeline-configuration –
Gerçekten de bunu işaretlediğiniz için teşekkür ederim. Daha dikkatli bakmalıyız ... çift tırnak kullanırken, enterpolasyon beklendiği gibi çalışır. İsterseniz bunu bir cevap olarak ekleyebilirsiniz. – Dirk