No se puede acceder a la variable maravillosa dentro del script de shell en JenkinsFile

No se puede acceder a la variable maravillosa dentro del script de shell en JenkinsFile
def NAMESPACE = "Dev"

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

Lo anterior no funciona, el resultado es el siguiente:

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

Respuesta1

Groovy no realiza sustitución de variables dentro de cadenas entre comillas simples ( '). Utilice cadenas entre comillas dobles ( ") en su lugar; esto también requerirá escapar de variables que no sean Groovy:

def NAMESPACE = "Dev"

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

información relacionada