Não é possível acessar a variável groovy dentro do script Shell no JenkinsFile

Não é possível acessar a variável groovy dentro do script Shell no JenkinsFile
def NAMESPACE = "Dev"

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

O procedimento acima não funciona, a saída é a seguinte:

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

Responder1

Groovy não realiza substituição de variáveis ​​dentro de strings entre aspas simples ( '). Em vez disso , use strings entre aspas duplas ( ") - isso também exigirá o escape de variáveis ​​não-Groovy:

def NAMESPACE = "Dev"

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

informação relacionada