在 Groovy 脚本中传递变量

问题描述 投票:0回答:1

我试图在 Jenkins 管道中使用的 Groovy 脚本中传递一个变量,但失败了。

...
def jsonResponse = readJSON text: uploadResponse
def uploadID = jsonResponse.message      
            
def response_analyze = sh(script: '''
    curl_output=$(     curl -X POST "http://10.10.10.10:8081/repo/api/v2/jobs" \
         -H "Authorization: Bearer xxxxxxxxxxxxxxx" \
         -H "folderId: 3" \
         -H "uploadId:${uploadID}" \
         -H "Content-Type: application/json" \
 }')

    echo \$curl_output
'''.trim(), returnStdout: true).trim()

// Parse the JSON response
def jsonResponseAnalyze = readJSON text: response_analyze
def message_analyze_ID = jsonResponseAnalyze.message
...

所以我想在curl命令中使用“uploadID”变量,其中“-H uploadID”。

我尝试使用“-H”uploadId:$ {uploadID}“”和其他东西,但仍然给出“上传id应该是整数”错误。

我该怎么做?

jenkins groovy
1个回答
0
投票

使用三重双引号:

def response_analyze = sh(script: """
    curl_output=\$(     curl -X POST "http://10.10.10.10:8081/repo/api/v2/jobs" \
         -H "Authorization: Bearer xxxxxxxxxxxxxxx" \
         -H "folderId: 3" \
         -H "uploadId:${uploadID}" \
         -H "Content-Type: application/json" \
 }')

    echo \$curl_output
""".trim(), returnStdout: true).trim()

不要忘记转义

$
,你想在shell中扩展,而不是在groovy中。

© www.soinside.com 2019 - 2024. All rights reserved.