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 для class: groovy.lang.Binding

Я пытался экспортировать его и другие вещи, такие как использование $ {env.VARIABLE} или просто $ {VARIABLE}, все еще не помогая установить переменную в конвейере. Как это должно быть сделано с конвейерами Jenkins?

1
задан 11 September 2018 в 00:06
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
    """
3
ответ дан 3 December 2019 в 18:26

Теги

Похожие вопросы