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
    """

相关内容