Jenkins: la variable de entorno no se configura desde la canalización

Jenkins: la variable de entorno no se configura desde la canalización

Aquí está mi guión. Estoy intentando configurar variables en el script de shell pipline:

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()



}

Pero estoy entendiendo:

groovy.lang.MissingPropertyException: No existe tal propiedad: IPADDRESS para la clase: groovy.lang.Binding

Estaba intentando exportarlo y otras cosas como usar ${env.VARIABLE} o simplemente ${VARIABLE} todavía no ayudan a configurar la variable en la canalización. ¿Cómo se debe hacer con las tuberías de Jenkins?

Respuesta1

Reemplace sus comillas dobles con comillas simples para evitar $IPADDRESSque se interpreten como una variable Groovy:

  sh '''
    IPADDRESS = \$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" anyconnect)
    echo $IPADDRESS
    ip route replace xx.xx.xx.xx. via $IPADDRESS
    '''

Alternativamente, escape del signo del dólar:

  sh """
    IPADDRESS = \$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" anyconnect)
    echo ${'$'}IPADDRESS
    ip route replace xx.xx.xx.xx. via ${'$'}IPADDRESS
    """

información relacionada