これが私のスクリプトです。パイプライン シェル スクリプトで変数を設定しようとしています。
node {
anyconnect = docker.image('anyconnect:1').run("--cap-add NET_ADMIN --cap-add SYS_ADMIN --device /dev/net/tun:/dev/net/tun -e VPN_USER=${env.USER} -e VPN_PASS=${env.PASS} --name anyconnect")
sh 'echo "Startig anyconnect and setting route"'
sh """
IPADDRESS = \$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" anyconnect)
echo $IPADDRESS
ip route replace xx.xx.xx.xx. via $IPADDRESS
"""
anyconnect.stop()
}
しかし、私は次のことを理解しています:
groovy.lang.MissingPropertyException: クラス groovy.lang.Binding のプロパティ IPADDRESS は存在しません
エクスポートしようとしましたが、${env.VARIABLE} や ${VARIABLE} だけを使用するなどの他の方法を試しても、パイプラインで変数を設定するのに役立ちません。Jenkins パイプラインではどのように実行すればよいですか?
答え1
$IPADDRESS
Groovy 変数として解釈されないように、二重引用符を一重引用符に置き換えます。
sh '''
IPADDRESS = \$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" anyconnect)
echo $IPADDRESS
ip route replace xx.xx.xx.xx. via $IPADDRESS
'''
あるいは、ドル記号をエスケープします。
sh """
IPADDRESS = \$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" anyconnect)
echo ${'$'}IPADDRESS
ip route replace xx.xx.xx.xx. via ${'$'}IPADDRESS
"""