10
Pipeline plugin in Jenkins 2.xを使用して、sh
ステップ内からステージまたはノードレベルのどこかで定義されたGroovy変数にアクセスするにはどうすればよいですか?JohkinsパイプラインのシェルステップからGroovy変数にアクセス
簡単な例:
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
}
}
はジェンキンス出力ページに以下が得られる:sh
ステップにおいて
[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
一方が見ることができるように、echo
空の文字列を印刷します。
回避策
env.some_var = 'Hello World'
を通じて環境スコープ内の変数を定義し、しかし
sh 'echo ${env.some_var}'
、人権侵害のこの種のこのタスクのための環境の範囲を経由してそれを印刷することです。
[グルーヴィーで、単一または二重引用符内の文字列の違いは何ですか?](http://stackoverflow.com/questions/6761498/whats-the-difference-of-strings-within-singleの可能性のある重複-or-double-quotes-in-groovy) –
正確に重複しているわけではありませんが、正しい引用符を使用するのは簡単なことです。あなたがリンクしたページの例は二重引用符を使用しています:https://jenkins.io/doc/book/pipeline/overview/#basic-groovy-syntax-for-pipeline-configuration –
本当に、これを指摘してくれてありがとう。もっと注意深く見ていたはずです...二重引用符を使用すると、補間は期待通りに機能します。これを答えとして追加することもできます。 – Dirk