Получите подробные сведения обо всех сборках всех заданий из Jenkins REST API - PullRequest
0 голосов
/ 10 января 2019

У меня есть сервер Jenkins, и оттуда я пытаюсь получить подробные сведения о сборке (например, результат, метка времени, продолжительность и т. Д.) Для всех заданий с помощью REST API Jenkins, а затем сохранить их в своей базе данных.

Сейчас я вызываю следующий API из своего Java-кода, чтобы получить все задания (около 200 заданий):

https://<JENKINS_HOST>/api/json

Затем я получаю сведения о работе и все сборки для каждой работы, используя:

https://<JENKINS_HOST>/job/MY_JOB/api/json

Затем, наконец, для каждой из сборок (мне нужно получить только последние 50), я должен вызвать это, чтобы получить детали сборки:

https://<JENKINS_HOST>/job/MY_JOB/<BUILD_NUMBER>/api/json

Таким образом, в сумме получается 50 * 200 + 201 = более 10000 вызовов API.

Я предполагаю, что эти многочисленные вызовы API заставили бы сервер Jenkins работать медленно?

Итак, мой вопрос: есть ли более быстрый / более оптимальный способ сделать это, чтобы мне не приходилось делать так много вызовов API?

Что-то вроде того, где я могу получить все детали сборки, используя один URL, например: (Гипотетически)

https://<JENKINS_HOST>/job/MY_JOB/api/json?fetchAllbuildDetails=True

1 Ответ

0 голосов
/ 15 января 2019

В случае, если кто-то еще застрял с тем же, я смог сделать это с помощью дерева:

https://<JENKINS_HOST>/api/json?tree=jobs[name,url,builds[number,result,duration,url]]

Здесь имена столбцов могут быть отфильтрованы для выборки только тех данных, которые вам нужны, поскольку объем данных, возвращаемых из этого, огромен.

Вы также можете ограничить количество извлекаемых записей следующим образом:

https://<JENKINS_HOST>/api/json?tree=jobs[name,url,builds[number,result,duration,url]{0,50}]

Это принесет только последние 50 сборок для всех заданий, а это именно то, что мне нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...