明らかな何かが欠けています。 groovyスクリプトからシェルコマンドに変数を渡すにはどうすればよいですか?これは、構文が重要な場合、Jenkinsfileのコンテキスト内にあります。
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh '''COLOR=${COLOR}
echo $COLOR'''
}
}
Shellビットがgreen
と表示されることを期待していますが、次のようになります。
[Pipeline] echo
color is green
[Pipeline] sh
[job] Running Shell script
+ COLOR=
+ echo
sh
で三重引用符を使用する必要があります。これは、これを整理するとそこに含まれるコンテンツがあるためです。
文字列内の式を置き換えるには、単一引用符ではなく二重引用符を使用する必要があります。
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh """COLOR=${COLOR}
echo $COLOR"""
}
}
何らかの理由で一重引用符を使用する必要がある場合は、+
を使用して連結してみてください。
sh '''COLOR=''' + COLOR + '''
echo ''' + COLOR
ここのコードがgroovy変数の値( "green")を環境変数COLORに割り当て、_echo $COLOR
は、Shell変数、$
は、シェルが次のように読み取れるようにエスケープする必要があります。
sh """COLOR=${COLOR}
echo \$COLOR"""
COLOR = "緑"
shラベル: ''、スクリプト: "echo $ COLOR"