Jenkins - 環境變數未從管道設置

Jenkins - 環境變數未從管道設置

這是我的腳本。我嘗試在 pipline shell 腳本中設定變數:

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

將雙引號替換為單引號,以防止$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
    """

相關內容