Jenkins - Umgebungsvariable wird nicht aus der Pipeline eingerichtet

Jenkins - Umgebungsvariable wird nicht aus der Pipeline eingerichtet

Hier ist mein Skript. Ich versuche, Variablen im Pipeline-Shell-Skript einzurichten:

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



}

Aber ich bekomme:

groovy.lang.MissingPropertyException: Keine solche Eigenschaft: IPADDRESS für Klasse: groovy.lang.Binding

Ich habe versucht, es zu exportieren, und andere Dinge wie die Verwendung von ${env.VARIABLE} oder einfach ${VARIABLE} helfen immer noch nicht beim Einrichten der Variable in der Pipeline. Wie soll das mit Jenkins-Pipelines gemacht werden?

Antwort1

Ersetzen Sie Ihre doppelten Anführungszeichen durch einfache Anführungszeichen, um zu verhindern, dass sie $IPADDRESSals Groovy-Variable interpretiert werden:

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

Alternativ können Sie das Dollarzeichen maskieren:

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

verwandte Informationen