JenkinsFile의 쉘 스크립트 내에서 그루비 변수에 액세스할 수 없습니다.

JenkinsFile의 쉘 스크립트 내에서 그루비 변수에 액세스할 수 없습니다.
def NAMESPACE = "Dev"

def BODY= sh(
script:'''body=$(cat <<-EOF
{
    "name": "${NAMESPACE}",
    "type": "regularwebapp"
}
EOF
)
(echo $body)''',
returnStdout: true
).trim()

위의 내용은 작동하지 않으며 출력은 다음과 같습니다.

{
    "name": "",
    "type": "regularwebapp"
}

답변1

Groovy는 작은따옴표( ') 문자열 내에서 변수 대체를 수행하지 않습니다. 대신 큰따옴표( ") 문자열을 사용하세요. 이 경우 Groovy가 아닌 변수도 이스케이프 처리해야 합니다.

def NAMESPACE = "Dev"

def BODY= sh(
script:"""body=\$(cat <<-EOF
{
    "name": "${NAMESPACE}",
    "type": "regularwebapp"
}
EOF
)
(echo \$body)""",
returnStdout: true
).trim()

관련 정보