3

有什么方法可以让 Approver 使用 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= '{&提交=批准}'

我遵循此API 支持手动批准 Jenkins 中的升级版本?发布作为参考,但没有运气

4

1 回答 1

3

是的,经过多次即插即用终于得到了解决方案。想分享一下,因为它可以帮助别人。首先,我传递的 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","name":"PARAMETER","value":""},{"_class":"hudson .model.StringParameterValue","name":"Job","value":"Deploy(ZettaDevelopment)"},{"_class":"hudson.model.StringParameterValue","name":"BuildSelection","value" :"PARAMETER"},{"_class":"hudson.model.StringParameterValue","name":"参数","值":"参数"}]}'

使用http://USER:TOKEN@JENKINS_URL/job/JOB_NAME/JOB_NUMBER/promotion/promotionProcess/PromoteForTesting/promotionBuild/Build_NUMBER/api/json找到传递的参数值

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

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

于 2016-10-08T21:01:56.437 回答