Jenkins - 파이프라인에서 환경 변수가 설정되지 않음

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} 사용과 같은 다른 항목을 내보내려고 했지만 여전히 파이프라인에서 변수를 설정하는 데 도움이 되지 않습니다. Jenkins 파이프라인에서는 어떻게 수행되어야 합니까?

답변1

$IPADDRESSGroovy 변수로 해석되는 것을 방지하려면 큰따옴표를 작은따옴표로 바꾸십시오 .

  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
    """

관련 정보