Jenkins - переменная окружения не устанавливается из конвейера
Вот мой сценарий. Я пытаюсь установить переменные в сценарии оболочки 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()
}
Но я получаю:
groovy.lang.MissingPropertyException: Нет такого свойства: IPADDRESS для класса: groovy.lang.Binding
Я пытался экспортировать его и другие вещи, такие как использование ${env.VARIABLE} или просто ${VARIABLE}, которые до сих пор не помогают установить переменную в конвейере. Как это сделать с трубопроводами Дженкинса?
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
"""