無法存取 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()

相關內容