用于批准Jenkins中的提升构建作业的API(curl)命令

时间:2016-10-07 15:16:43

标签: curl jenkins-plugins jenkins-api

审批人是否可以使用curl命令批准特定的构建?

我正在使用Promoted Builds Plugin手动批准构建。

当我在curl命令下面尝试时,它正在给出“错误400没有提交”。我到处搜索,但无法得到正确答案。请帮忙

curl http://admin:XXXXXXXXXXXX@JENKINS_URL/job/JOB_NAME/129/promotion/promotionProcess/PromoteForTesting/promotionCondition/hudson.plugins.promoted_builds.conditions.ManualCondition/approve?token=abcde1234

当我试图传递JSON数据时,它正在抛出“错误403请求中没有包含有效的碎屑”

命令是 curl http://admin:XXXXXXXXXXXX@JENKINS_URL/job/JOB_NAME/129/promotion/promotionProcess/PromoteForTesting/promotionCondition/hudson.plugins.promoted_builds.conditions.ManualCondition/approve?token=abcde1234 --data-urlencode json ='{& Submit = Approve}'

我关注此API support for manual approval of promoted builds in Jenkins?帖子作为参考,但没有运气

1 个答案:

答案 0 :(得分:2)

是的,在玩了很多插件之后终于得到了解决方案..想分享,因为它可以帮助别人。 首先,我传递的Json值不正确,并且没有促销期望的所有参数。其次,因为我已启用CSRF保护,HTTP请求应具有有效的碎屑。所以我做的是我手动批准了一些虚拟工作并获得了成功推广工作的JSON。它包含所有传递的参数。所以它帮助我获得了应该从CURL命令传递的所有参数。最后,工作网址如下。您可以根据需要将任何其他参数传递给JSON DATA。

请注意:crumb字段名称已从许多stackoverflow答案中提供的答案中更改。现在归档名称不是“.crumb”而是“Jenkins-Crumb”

curl -v -H“Jenkins-Crumb:XXXXXXXXXXX”-X POST http://USER:TOKEN@JENKINS_URL/job/JOB_NAME/JOB_NUMBER/promotion/promotionProcess/PromoteForTesting/promotionCondition/hudson.plugins.promoted_builds.conditions.ManualCondition/approve --data-urlencode json ='{“parameters”:[{“_ class”:“hudson.model.StringParameterValue”, “名称”: “参数”, “值”: “”},{ “_类”: “hudson.model.StringParameterValue”, “名称”: “工作”, “值”: “部署(ZettaDevelopment)”},{ “_class”: “hudson.model.StringParameterValue”, “名”: “BuildSelection”, “值”: “参数”},{ “_类”: “hudson.model.StringParameterValue”, “名”: “参数”, “值”: “参数”}]}“

使用http://USER:TOKEN@JENKINS_URL/job/JOB_NAME/JOB_NUMBER/promotion/promotionProcess/PromoteForTesting/promotionBuild/Build_NUMBER/api/json

找到传递的参数值

这里Build_NUMBER是手动批准的构建。从输出中,您可以轻松获得要传递的所需参数。

希望这可以帮助,至少它对我有用: - )