我在詹金斯有一份工作。我们自己的网站通过REST api触发了这项工作的构建。有时我们想要中止构建。有时,它可能在构建开始之前。在这种情况下,我们有queueItem#而不是build#。
如何通过REST API进行此操作?
答案 0 :(得分:27)
如果构建已经开始,请POST
开启:
http://<Jenkins_URL>/job/<Job_Name>/<Build_Number>/stop
将停止/取消当前版本。
如果构建尚未开始,您可以使用queueItem
,然后POST
:
http://<Jenkins_URL>/queue/cancelItem?id=<queueItem>
这假设您的Jenkins服务器尚未受到保护,否则您需要为具有取消权限的用户添加BASIC authentication。
答案 1 :(得分:2)
实际上这个问题已经回答了。所以我要补充一下,如何找到id=<queueItem>
,我找不到这个问题,这对其他人有帮助。
因此,您可以通过 - http://jenkins:8081/queue/api/json
获取<queueItem>
示例输出将是像这样的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
答案 2 :(得分:1)
也许你想远程发送一个post http请求来停止正在运行的构建,有一个线索FYI,jenkins作业可以停止另一个作业(运行构建),就像任何jenkins管理员在作业运行时单击X按钮一样。
完成
答案 3 :(得分:1)
如果您只需要从某个作业中取消活动版本,则可以使用此批处理脚本(Windows .bat语法):
REM @Echo off
CLS
REM CANCEL ACTIVE BUILD
REM PARAMETER 1 ACTIVE JOB NAME
if [%1] == [] GOTO NO_ARGUMENT
SET domain=https://my.jenkins.com/job/
SET path=/lastBuild/stop
SET url=%domain%%1%path%
"\Program Files\Git\mingw64\bin\curl.exe" -X POST %url% --user user:pass"
GOTO THEEND
:NO_ARGUMENT
Echo You need to pass the active jobname to cancel last build execution
:THEEND
需要设置本地curl
的路径。