web-dev-qa-db-ja.com

Jenkins-パイプラインから設定されていない環境変数

これが私のスクリプトです。私はピップラインシェルスクリプトで変数を設定しようとしています:

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:そのようなプロパティはありません:クラスのIPADDRESS:groovy.lang.Binding

私はそれをエクスポートしようとしていましたが、$ {env.VARIABLE}や$ {VARIABLE}を使用するなどの他のことはまだパイプラインで変数を設定するのに役立ちませんでした。 Jenkinsパイプラインでそれをどのように行う必要がありますか?

1
user3069488

二重引用符を単一引用符に置き換えて、$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
    """
3
jayhendren