- 22, Oct 2024
- #1
Возникает множество вопросов о том, как вернуть список всех заданий в вашем экземпляре Jenkins или даже получить список тех заданий, которые выполняются в данный момент, но у меня есть более конкретный вариант использования.
Мне нужно посмотреть, выполняется ли уже одно задание. Например, верните одно значение, если выполняется 1 сборка задания, и другое значение, если выполняются 2 или более сборок.
Вариант использования здесь заключается в том, что мы автоматизировали создание образа для сборки после успешных модульных тестов. Он настроен на создание максимум одного образа каждые семь часов, проверяя время сборки последнего образа и отменяя сборку, если оно прошло менее 7 часов. Это отлично работает для большинства случаев. Однако создание этих изображений занимает около 20 минут. Если прошло более 7 часов и два Модульные тесты завершаются с разницей менее чем в 20 минут, вторая сборка не замечает создания первой и продолжает сборку. Мы получаем два функционально идентичных изображения, сделанных каждые 7 часов с разницей всего в несколько минут. Я хотел бы проверить состояние задания контроллера, чтобы узнать, запущено ли оно уже, чтобы вторая сборка могла отменить его.
Я попробовал свернуть следующий API, но оказалось, что он не регистрирует отдельные сборки, а только то, что задание выполняется в целом, что в данном случае бесполезно, поскольку оно запускается автоматически, поскольку проверка означает, что оно уже запущено. ; нет никакой разницы между одной сборкой и несколькими сборками.
http://JENKINS_URL/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs
TL;DR: Могу ли я сделать другой вызов, который вернет некоторый список/файл/содержимое, указывающий, что в данный момент выполняется несколько сборок одного и того же задания?
#jenkins #jenkins-pipeline