Получить номер сборки или артефакты последующей сборки в Jenkins

У меня есть работа (назовите ее BIGJOB) в Jenkins; несколько шагов сборки - запускать сборки для других заданий (назовите их SMALLJOB) с помощью Плагин параметризованного триггера, затем дождитесь их завершения. Что мне нужно сделать, так это получить артефакты из запущенной сборки SMALLJOB.

Первоначально я думал, что могу использовать плагин копирования артефактов для получения артефакты из «последней сборки» запущенного SMALLJOB. И это действительно работает надежно, когда одновременно выполняется только одно МАЛЕНЬКОЕ ЗАДАНИЕ.

Но у меня работает несколько BIGJOB, все запускают несколько SMALLJOB, так что использование «последней сборки» ненадежно, если два SMALLJOB завершаются одновременно.

Есть ли более надежный способ получить артефакты от конкретной последующей работы? Если бы я мог просто получить номер сборки, я мог бы использовать curl для получения артефактов.


person Jason Swager    schedule 20.08.2011    source источник


Ответы (3)


Просто, если кто-нибудь (еще) столкнется с этим вопросом в будущем:

При использовании плагина параметризованного триггера в качестве шага сборки, а затем, если триггер настроен с включенным параметром «Блокировать, пока запущенные проекты не завершат свои сборки», следующие переменные среды становятся доступными для дальнейших шагов сборки:

  • LAST_TRIGGERED_JOB_NAME = "Последний проект начат"
  • TRIGGERED_BUILD_NUMBER_ {имя проекта} = "Сработал номер последней сборки"

начиная с версии 2.17

  • TRIGGERED_JOB_NAMES = "Список всех запущенных проектов, разделенных запятыми"
  • TRIGGERED_BUILD_NUMBERS_ {project name} = "Список запущенных номеров сборки, разделенных запятыми"
  • TRIGGERED_BUILD_RESULT_ {имя проекта} = "Результат последней запущенной сборки проекта"
  • TRIGGERED_BUILD_RESULT_ {имя проекта} RUN {номер сборки} = "Результат запущенной сборки для номера сборки"
  • TRIGGERED_BUILD_RUN_COUNT_ {project name} = "Количество запускаемых сборок для проекта"

См. Дополнительную информацию на веб-сайте плагина, ссылка на который указана в вопросе.

person tveon    schedule 25.06.2013
comment
можно ли использовать их в конвейере? - person Maxim Suslov; 05.07.2019

Нашел свой ответ. Не так просто, как плагин или уже установленная переменная, но работает.

Используйте Jenkins XML API с глубиной = 1 (очень важно, чтобы получить полностью пройденные URL-адреса и всю доступную информацию) и XPATH. Вот образец URL-адреса, который я использовал:

http://jenkins/job/SMALLJOB/api/xml?depth=1&xpath=/freeStyleProject/build[action/cause/upstreamProject="%JOB_NAME%" and action/cause/upstreamBuild=%BUILD_ID%]/number/text()

Это вернет номер сборки правильного МАЛЕНЬКОГО ЗАДАНИЯ (того, которое было запущено ЭТОМ БОЛЬШОЙ ЗАДАНИЕМ). Затем используйте этот номер в http-загрузке из Jenkins, чтобы получить заархивированные файлы сборки.

person Jason Swager    schedule 22.08.2011

Вы можете обратиться к этим функциям:

Jenkins Build, где можно найти:

jenkinsapi.api.block_until_complete (jenkinsurl, jobs, maxwait = 12000, interval = 30, raise_on_timeout = True, username = None, password = None)

jenkinsapi.api.get_artifacts (jenkinsurl, jobid = None, build_no = None, username = None, password = None)

jenkinsapi.api.get_build (jenkinsurl, jobname, build_no, username = None, password = None)

jenkinsapi.api.get_latest_build (jenkinsurl, jobname, username = None, password = None)

jenkinsapi.api.get_latest_complete_build (jenkinsurl, jobname, username = None, password = None)

jenkinsapi.api.get_latest_test_results (jenkinsurl, jobname, username = None, password = None)

jenkinsapi.api.get_nested_view_from_url (url, username = None, password = None)

jenkinsapi.api.get_view_from_url (url, username = None, password = None)

jenkinsapi.api.grab_artifact (jenkinsurl, jobid, artifactid, targetdir, username = None, password = None)

jenkinsapi.api.install_artifacts (артефакты, dirstruct, installdir, basestaticurl)

jenkinsapi.api.search_artifact_by_regexp (jenkinsurl, jobid, artifactRegExp, username = None, password = None)

person Kamesh Jungi    schedule 12.04.2016