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

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

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

Первоначально я думал, что могу использовать Copy Artifact Plugin для извлечения артефактов из "последней сборки" запускаемого SMALLJOB. И это работает надежно, когда одновременно работает только один SMALLJOB.

Но у меня запущено несколько BIGJOBs, все запуская несколько SMALLJOB, так что использование "последней сборки" недостоверно двух завершенных SMALLJOBs.

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

4b9b3361

Ответ 1

Просто, если какой-либо (иначе) грохочет в этом вопросе в будущем:

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

  • LAST_TRIGGERED_JOB_NAME = "Запущен последний проект"
  • TRIGGERED_BUILD_NUMBER_ {имя проекта} = "Номер последней сборки запущен"

с версии 2.17 и далее

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

Подробнее о сайте плагина см. в вопросе.

Ответ 2

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

Используйте XML API Jenkins с глубиной = 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()

Это вернет номер сборки правого SMALLJOB (тот, который запускается ЭТОЙ БОЛЬШОЙ). Затем используйте это число в http download от Jenkins, чтобы получить архивные файлы сборки.

Ответ 3

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

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, имя задания, имя пользователя = нет, пароль = нет)

jenkinsapi.api.get_latest_complete_build (jenkinsurl, имя задания, имя пользователя = нет, пароль = нет)

jenkinsapi.api.get_latest_test_results (jenkinsurl, имя задания, имя пользователя = нет, пароль = нет)

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, имя пользователя = нет, пароль = нет)

Ответ 4

Может ли кто-нибудь сказать мне, как использовать TRIGGERED_JOB_NAMES Чего я хочу добиться, так это после того, как все вспомогательные задания, инициированные основным заданием, напечатают все имена заданий. Это то, что я делаю. Пожалуйста, исправьте то, что отсутствует

Параметризованный плагин Jenkins Trigger