Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Jenkins - узнать текущее состояние (занят/свободен).


(Ray Romanov) #1

Вот возник вопрос, каким способом узнать у Jenkins, выполняет он сейчас какую нибудь джоб или свободен (в ожидании), интересует HTTP или JSON запрос.


(rmerkushin) #2

У Jenkins есть REST API. Так же можно поглядеть в сторону python библиотек Python Jenkins и JenkinsAPI


(Stan) #3

http://jenkins/job/job-name/lastBuild/api/xml?depth=1&xpath=*/building/text()

Отдаёт true/false, вместо job-name имя своего джоба, xpath вытаскивает нужный параметр из xml ответа, если уберешь - увидешь весь ответ. Либо бери json ответ и парсь програмно.


(Stan) #4

Пример на публичном сервере. Отличие от данного примера в настройках сервера, поэтому как я понял text() получить не получится - http://jenkins.nodejs.org/job/print-env/lastBuild/api/xml?depth=1&xpath=*/building

С другой стороны это можно обойти как то так - http://jenkins.nodejs.org/job/print-env/lastBuild/api/xml?depth=1&xpath=*/building[contains(text(),%27false%27)]


(Ray Romanov) #5

Немного не то, мне нужно только одно выполняет ли женкинс сейчас без разницы какую джобу или стоит ждет когда событие произойдет, т.е. free или busy статус


(Stan) #6

Тогда можешь парить tree по всем билдам. Узнаем какие билды идут, какие нет: http://jenkins.nodejs.org/api/json?tree=jobs[name,lastBuild[building]] , если не нужны названия, убираем name


(Ray Romanov) #7

Это уже ближе к истине, спасибо!!!
Да и еще вопрос можно ли “усыпить/приостановить” женкинс, а потом “разбудить/запустить”?


(Stan) #8

Дженкинс не контролирует процессы которые запускает, сама суть задачи не понятна, зачем? Тесты скорее всего упадут за время вашего суспенда.


(Ray Romanov) #9

Задача заключается в том, что делаем Веб клиент для выборочного запуска тестов. Вот и нужно проверять, если в Jenkins выполняется сборка то тест нельзя запустить, если сборка не выполняется - то залочить работу Jenkins, провести запуск тестов, разлочить Jenkins.


(Максим Таран) #10

А зачем городить огород? Дженкинс же для этого самого и предназначен. Создайте соответсвующую задачу и всё, и в случае превышения лимита параллельных сборок дженкинс будет ждать, когда освободится.


(Ray Romanov) #11

Для данной задачи не предназначен!


(Максим Таран) #12

Для запуска выборочного тестов???


(Ray Romanov) #13

Прошу ответы по существу вопроса, отвечу если бы Jenkins подходил для данной задачи я тут бы вопросы не задавал!


(Stan) #14

Ну как вариант - дизейбл нужной джобы, эндпоинт - http://jenkins.nodejs.org/job/print-env/disable , включение обратно - enable


(Dmitriy Zverev) #15

В том виде, как сформулирована задача - Jenkins её решает. McStar написал как + возможно, с этим плагином


(Stan) #16

Не решает, надо блокировать как-то програмно через апи, судя по вопросу.


(Ray Romanov) #17

Совершенно верно, твой предложенный вариант подхода к вопросу то что нужно, огромное спасибо.
Вопрос решен, на данный момент :smile: