如何在groovy中从jenkins管道将json主体传递给curl命令
在Jenkins管道中,似乎不可能使用sh命令为带有curl的POST请求传递表示json主体的字符串 我在管道步骤中有以下sh线:如何在groovy中从jenkins管道将json主体传递给curl命令,curl,jenkins-pipeline,http-post,Curl,Jenkins Pipeline,Http Post,在Jenkins管道中,似乎不可能使用sh命令为带有curl的POST请求传递表示json主体的字符串 我在管道步骤中有以下sh线: def apiCmd = 'curl -X POST --user user:passe --data \\"{\\"state\\":\\"' + stateStr + '\\",\\"context\\":\\"branch-regression\\"}\\"' + " --url ${Configuration.CommitStatusUpdateURL}
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
令人恼火的是,如果您想用原生groovy Jenkins来运行post请求,则会抱怨安全性问题。。如果您尝试使用Curl,那么JSON解析不好请尝试以下方法:
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/