Как остановить сборку в Jenkins через REST api?

У меня есть работа в Дженкинсе. Веб-сайт наших собственных триггеров создает эту работу через REST api. Иногда мы хотим прервать сборку. Иногда это может быть до начала сборки. В таких случаях у нас есть queueItem # вместо сборки #.

Как это сделать через REST api?

Ответы

Ответ 1

Если сборка началась, POST on:

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

Остановит/отменит текущую сборку.

Если сборка не началась, у вас есть queueItem, затем POST on:

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

Предполагается, что ваш Jenkins Server не был защищен, иначе вам нужно добавить BASIC authentication для пользователя с привилегиями Cancel.

Ответ 2

На самом деле этот вопрос уже дан. Поэтому я добавлю, как найти id=<queueItem>, который я застрял в поиске этого решения, что будет полезно для других.

Итак, вы можете получить <queueItem>, by - http://jenkins:8081/queue/api/json

Образец Output будет иметь тип 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

Ответ 3

Возможно, вы хотите удаленно отправить сообщение http-запроса, чтобы остановить запущенную сборку, есть ключ FYI, задание jenkins может остановить другое задание (работает сборка), как и любой администратор jenkins, щелкнуть по кнопке X, когда работа запущена.

  • Плагины запроса Http требуется Jenkins ver2.17
  • Снимите флажок Запретить использование уязвимостей Cross Site Request Forgery. Менеджер Дженкинс → Настройка глобальной безопасности → Снимите флажок
  • Настройка авторизации плагинов запроса Http. Менеджер Jenkins → Настройка системы → HTTP-запрос Базовая/дайджест-аутентификация → add. Убедитесь, что у пользователя есть разрешение на отмену работы.
  • Запускается работа A. В задании B добавьте шаг сборки как HTTP-запрос, URL: http://Jenkins_URL/job/Job_A_Name/lastBuild/stop, режим HTTP: POST, авторизация выберите пользователя, которого вы только что установили, затем выполните задание B.

Готово