无法访问 JenkinsFile 中 shell 脚本内的 groovy 变量

无法访问 JenkinsFile 中 shell 脚本内的 groovy 变量
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()

相关内容