J'ai un travail à Jenkins. Un site Web de nos propres déclencheurs construit ce travail via l’API REST. Parfois, nous voulons abandonner la construction. Parfois, cela peut être avant même que la construction ne soit lancée. Dans de tels cas, nous avons le queueItem # à la place du build #.
Comment le faire via l'API REST?
Si la construction a commencé, par POST
sur:
http://<Jenkins_URL>/job/<Job_Name>/<Build_Number>/stop
Arrêtera/annulera la construction actuelle.
Si la construction n'a pas commencé, vous avez la queueItem
, puis POST
sur:
http://<Jenkins_URL>/queue/cancelItem?id=<queueItem>
En supposant que votre serveur Jenkins n’ait pas été sécurisé, sinon vous devez ajouter authentification BASIC pour un utilisateur disposant de Cancel privilèges.
En fait, cette question est déjà résolue. J'ajouterai donc comment trouver id=<queueItem>
, ce qui m'a empêché de trouver cette solution, ce qui sera utile pour les autres.
Donc, vous pouvez obtenir <queueItem>
, par - http: // jenkins: 8081/queue/api/json
La sortie exemple sera de type json comme celui-ci -
[{"_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"
Vous devez prendre "id":117
et l’analyser comme suit: - queueItem =117
.
http://<Jenkins_URL>/queue/cancelItem?id=queueItem
Peut-être voulez-vous envoyer à distance une requête post-http pour arrêter une construction en cours, il existe un indice, le travail jenkins peut arrêter un autre travail (construction en cours), comme tout administrateur jenkins, cliquez sur le bouton X lorsque le travail est en cours d'exécution.
Terminé
Si vous devez uniquement annuler la construction active à partir d'un certain travail, vous pouvez utiliser ce script de traitement par lots (syntaxe 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
Le chemin vers votre boucle locale doit être défini