如何从groovy中的jenkins管道传递json主体到curl命令

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

[在Jenkins Pipeline内使用sh命令,似乎无法通过curl传递表示json主体的字符串以进行POST请求。

我在管道步骤中有以下sh行:

def apiCmd = 'curl -X POST --user user:passe --data  \\"{\\"state\\":\\"' + stateStr + '\\",\\"context\\":\\"branch-regression\\"}\\"' + " --url ${Configuration.CommitStatusUpdateURL}

现在Jenkins实际运行的是:

curl -X POST --user user:pass--data '""state":"failure""' '""context":"branch-regression""' --url someurl

令人讨厌的是,如果您要使用天然的时髦Jenkins投诉有关安全性的东西来运行发布请求,并且如果尝试使用Curl,那么JSON解析得不好

curl jenkins-pipeline http-post
1个回答
0
投票

尝试一下:

def curlOut = sh script: """curl -X POST --user user:passe --data '{"state":"${stateStr}", "context": "branch-regression"}' --url ${Configuration.CommitStatusUpdateURL} """, returnOutput: true

[为了将来,您可以转到Jenkins脚本控制台(位于your.jenkins.url/script)并运行例如这个:

def stateStr = "OK"
def Configuration_CommitStatusUpdateURL = "https://www.x.com/"
println """curl -X POST --user user:passe --data '{"state":"${stateStr}", "context": "branch-regression"}' --url ${Configuration_CommitStatusUpdateURL} """ 

结果:

curl -X POST --user user:passe --data '{"state":"OK", "context": "branch-regression"}' --url https://www.x.com/
© www.soinside.com 2019 - 2024. All rights reserved.