この非常に単純なワークフローの場合:
env.FOO = 42
node {
sh "echo $FOO"
}
次のエラーが発生します。
Running: End of Workflow
groovy.lang.MissingPropertyException: No such property: FOO for class: WorkflowScript
ワークフローシェルステップで環境変数にアクセスするにはどうすればよいですか?
補間を混合する必要があるという問題がありました。スクリプトの一部が前に補間され、スクリプトの一部が中に補間される場合。実行中に補間する変数をバックスラッシュでエスケープするための秘訣:
def FOO = 42
node {
sh """
BAR = "hello $FOO"
echo \$BAR
"""
}
したがって、$ FOOはスクリプトの実行前に展開され、\ $ BARはスクリプトの実行中に展開されます。
その理由は、二重引用符を使用すると、Groovyの文字列補間が開始され、FOOのワークフロースコープ変数が検索されるためです。
修正するには、一重引用符を使用します。
sh 'echo $FOO'
また、二重引用符を使用してスクリプトでワークフロー変数を使用できることにも注意してください。
def FOO = 43
node {
sh "echo $FOO"
}
これにより、$FOO
beforeスクリプトが実行される値が展開されます。