Невозможно получить доступ к переменной Groovy внутри скрипта оболочки в JenkinsFile

Невозможно получить доступ к переменной Groovy внутри скрипта оболочки в 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()

Связанный контент