Jenkins中批准推广构建任务的API(curl)命令

3

有没有办法使用curl命令批准特定的构建?

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

当我尝试以下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:请求中未包含有效的crumb”。

这个命令是 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}'

我以Jenkins中手动批准推广构建的API支持帖子为参考,但没有成功。

1个回答

3
终于在尝试了很多插件后找到了解决方案...想分享出来以便帮助其他人。首先,我传递的Json值不正确,它没有所有期望的参数。其次,由于启用了CSRF保护,HTTP请求应该有一个有效的crumb。所以我手动批准了一些虚拟作业,并获得了成功提升作业的JSON。它包含了所有传递的参数。所以它帮助我获取了从CURL命令传递的所有参数。因此,最终的工作URL如下。您可以根据需要传递/删除任何其他参数到JSON数据中。
请注意:与许多stackoverflow答案提供的内容不同,crumb字段名称已更改。现在字段名不是“.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":"PARAMETER","value":"PARAMETER"}]}'

这是一段用于向 Jenkins 发送请求的命令,其中包含了需要填写的参数。请根据实际情况修改其中的 USER、TOKEN、JENKINS_URL、JOB_NAME 和 JOB_NUMBER 参数,并在需要时修改 Deploy(ZettaDevelopment) 参数。
传递的参数值是通过以下方式找到的:http://USER:TOKEN@JENKINS_URL/job/JOB_NAME/JOB_NUMBER/promotion/promotionProcess/PromoteForTesting/promotionBuild/Build_NUMBER/api/json 这里的Build_NUMBER是我手动批准的构建。从输出中,您可以轻松获取需要传递的必需参数。
希望这能帮助您,至少对我有用 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接