我试图在 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应该是整数”错误。
我该怎么做?
使用三重双引号:
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中。