我在詹金斯工作。我们自己的触发器的网站通过REST API来构建这项工作。有时我们想中止构建。有时候,它可能在构建开始之前。在这种情况下,我们有queueItem#而不是build#。如何通过REST API停止Jenkins中的构建?
如何通过REST API来实现?
我在詹金斯工作。我们自己的触发器的网站通过REST API来构建这项工作。有时我们想中止构建。有时候,它可能在构建开始之前。在这种情况下,我们有queueItem#而不是build#。如何通过REST API停止Jenkins中的构建?
如何通过REST API来实现?
如果构建已经开始,由POST
上:
http://<Jenkins_URL>/job/<Job_Name>/<Build_Number>/stop
将停止/取消当前的版本。
如果构建还没有开始,你有queueItem
,上然后POST
:
http://<Jenkins_URL>/queue/cancelItem?id=<queueItem>
这是假设你的詹金斯服务器尚未固定,否则你需要添加BASIC authentication为用户提供取消特权。
其实这个问题已经回答了。所以我会补充,如何找到id=<queueItem>
,我一直在寻找这个解决方案,这将有助于他人。
所以,你可以得到<queueItem>
,通过 - http://jenkins:8081/queue/api/json
样本输出将是JSON类型的像这样的 -
[{"_class":"hudson.model.Cause$RemoteCause","shortDescription":"Started by remote host 172.18.0.2","addr":"172.18.0.2","note":null}]}],"blocked":false,"buildable":false,"id":117,"inQueueSince":16767552,"params":"\nakey\t=AKIQ\nskey=1bP0RuNkr19vGze/bcb4ijDqVr8o\nnameofr=us\noutputtype=json\noid=284102\nadminname=admin","stuck":false,"task"
你必须采取"id":117
,并解析到 - queueItem =117
。
http://<Jenkins_URL>/queue/cancelItem?id=queueItem
也许你想远程发送POST HTTP请求停止正在运行的构建,有一个线索仅供参考,詹金斯的工作可以停止其他作业(运行编译),像任何詹金斯管理员时单击X按钮工作正在运行。
完成
非常感谢您为您的用户回复。第一个命令运行良好。然而,第二个返回404。你有什么想法会出错吗?顺便说一下,你是否有指向该部分API的文档的指针,因为我找不到它。 – Barth
我刚刚意识到,队列的命令确实会从队列中移除项目,但仍返回404。这很奇怪。 – Barth
同意。不幸的是,Jenkins在这部分没有明确的文档。 404有线,虽然它取消了从队列构建。但是您可以使用“http:///job///api”找到一些文档,并且您可以将“/ api”添加到很多url并获得显示其“REST API”的页面。 –