Подтвердить что ты не робот

Jenkins API: получить список заданий, отфильтрованных параметром build. Какие задания построили этот Git commit?

Мы отправляем разные параметры в наши задания Jenkins, среди которых Git commit SHA1. Мы хотим получить список заданий, которые использовали это значение параметра (Git SHA1 - какие задания выполняли это commit?).

Следующий URL-адрес даст нам все сборки:

http://jenkins.example.com/api/json?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&pretty=true

Требуется некоторое время для рендеринга (6 секунд) и содержит слишком много сборок (5 МБ построений).

Пример вывода из этого URL-адреса:

{
  "jobs" : [
    {
      "name" : "Job name - Build",
      "builds" : [
        {
          "actions" : [
            {
              "parameters" : [
                {
                  "name" : "GIT_COMMIT_PARAM",
                  "value" : "5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"
                }
              ]
            },
(...)

Как мы можем использовать JSON API Jenkins для отображения всех заданий с определенным значением параметра сборки?

4b9b3361

Ответ 1

Как мы можем использовать JSON API Jenkins для отображения всех заданий с определенным значением параметра сборки?

Не уверен в API JSON, но вы можете использовать XML API и сочетать параметры tree и xpath:

http://jenkins_url/api/xml?tree=jobs[name,builds[actions[parameters[name,value]]]]&xpath=/hudson/job[build/action/parameter[name="GIT_COMMIT_PARAM"][value="5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"]]/name&wrapper=job_names&pretty=true

Образец результата:

<job_names>
  <name>JOB1</name>
  <name>JOB2</name>
  <name>JOB3</name>
  ...
</job_names>

Примечание. задание попадает в этот список, если по крайней мере одна его сборка была построена с помощью требуемого параметра

Ответ 2

Также искал это, и к счастью, я нашел удивительный смысл

https://gist.github.com/justlaputa/5634984

Чтобы ответить на ваш вопрос:

jenkins_url + /api/json?tree=jobs[name,color]

Используя ваш пример сверху

http://jenkins.example.com/api/json?tree=jobs[name,color]

Таким образом, кажется, что все, что вам нужно сделать, это удалить параметр builds из вашего исходного URL, и вы должны быть в порядке

Ответ 3

Похоже, что он не поддерживается в JSON API, однако, если вы можете использовать XML API, можно запросить через XPATH, см. пример ниже

http://jenkins.example.com/api/xml?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&exclude=hudson/job/build/action/parameter[value!=%275447e2f43ea44eb4168d6b32e1a7487a3fdf237f%27]

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

кредит http://blog.dahanne.net/2014/04/02/using-jenkins-hudson-remote-api-to-check-jobs-status/

Ответ 4

Вот запрос только на прохождение работ:

http://jenkinsURL/job/ProjectFolderName/api/xml?tree=jobs[name,color=blue]

Вот запрос только для неудачных заданий:

http://jenkinsURL/job/ProjectFolderName/api/xml?tree=jobs[name,color=yellow]