여기 내 스크립트가 있습니다. 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} 사용과 같은 다른 항목을 내보내려고 했지만 여전히 파이프라인에서 변수를 설정하는 데 도움이 되지 않습니다. 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
"""