How to stop a build in Jenkins via the REST api ?

前端 未结 4 1039
我寻月下人不归
我寻月下人不归 2020-12-01 08:08

I have a job in Jenkins. A website of our own triggers builds of this job via the REST api. Sometimes we want to abort the build. Sometimes, it can be before the build is ev

相关标签:
4条回答
  • 2020-12-01 08:40

    If the build has started, by POST on:

    http://<Jenkins_URL>/job/<Job_Name>/<Build_Number>/stop
    

    Will stop/cancel the current build.

    If the build has not started, you have the queueItem, then POST on:

    http://<Jenkins_URL>/queue/cancelItem?id=<queueItem>
    

    This is assuming your Jenkins Server has not been secured, otherwise you need to add BASIC authentication for a user with Cancel privileges.

    0 讨论(0)
  • 2020-12-01 08:43

    If you only need to cancel the active build from a certain job you can use this batch script (windows .bat syntax):

    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
    

    Path to your local curl needs to set.

    0 讨论(0)
  • 2020-12-01 08:56

    Maybe you want to remotely send a post http request to stop a running build, there is a clue FYI, the jenkins job can stop another job(running build), like any jenkins admin click the X button when job is running.

    1. Http Request Plugins is required by Jenkins ver2.17
    2. Uncheck the Prevent Cross Site Request Forgery exploits option. Manager Jenkins -> Configure Global Security -> Uncheck
    3. Setup Http Request Plugins's authorization. Manager Jenkins -> Configure System -> HTTP Request Basic/Digest Authentication -> add. Make sure the user has the job cancel permission
    4. Job A is running. In job B, add build step as HTTP Request, URL: http://Jenkins_URL/job/Job_A_Name/lastBuild/stop, HTTP mode: POST, Authorization select the user you have just set, then build job B.

    Done

    0 讨论(0)
  • 2020-12-01 09:00

    Actually this question is already answered. So I will add, how to find id=<queueItem> , which I got stuck on finding this solution, which will helpful for others.

    So, you can get <queueItem>, by - http://jenkins:8081/queue/api/json

    Sample Output will be of json type like this one -

    [{"_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"
    

    You have to take "id":117, and parse it to - queueItem =117.

    http://<Jenkins_URL>/queue/cancelItem?id=queueItem
    
    0 讨论(0)
提交回复
热议问题