Ich habe einen Job in Jenkins. Eine eigene Website löst diesen Job über die API REST aus. Manchmal möchten wir den Build abbrechen. Manchmal kann es sein, bevor der Build überhaupt gestartet wird. In solchen Fällen haben wir das queueItem # anstelle des build #.
Wie geht das über die REST API?
Wenn der Build gestartet wurde, von POST
am:
http://<Jenkins_URL>/job/<Job_Name>/<Build_Number>/stop
Stoppt/bricht den aktuellen Build ab.
Wenn der Build noch nicht gestartet ist, haben Sie die Variable queueItem
und POST
am:
http://<Jenkins_URL>/queue/cancelItem?id=<queueItem>
Dies setzt voraus, dass Ihr Jenkins Server nicht gesichert ist. Andernfalls müssen Sie BASIC-Authentifizierung für Benutzer mit Cancel hinzufügen.
Eigentlich ist diese Frage bereits beantwortet. Ich füge also hinzu, wie man id=<queueItem>
findet, was mich beim Finden dieser Lösung, die für andere hilfreich sein wird, steckengeblieben ist.
So erhalten Sie <queueItem>
durch - http: // jenkins: 8081/queue/api/json
Die Sample-Ausgabe wird vom Typ Json wie dieser sein -
[{"_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"
Sie müssen "id":117
nehmen und nach - queueItem =117
parsen.
http://<Jenkins_URL>/queue/cancelItem?id=queueItem
Vielleicht möchten Sie eine HTTP-Anforderung per Post senden, um einen laufenden Build zu stoppen. Es gibt einen Hinweis. FYI. Der Jenkins-Job kann einen anderen Job anhalten (ausgeführtes Build). Klicken Sie auf die Schaltfläche X, wenn der Job ausgeführt wird.
Erledigt
Wenn Sie nur den aktiven Build von einem bestimmten Job abbrechen müssen, können Sie dieses Batch-Skript (Windows-BAT-Syntax) verwenden:
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
Der Pfad zu Ihrer lokalen Curl muss festgelegt werden