Получить номер сборки или артефакты последующей сборки в Дженкинсе
У меня есть работа (назовите это BIGJOB) в Дженкинсе; несколько шагов сборки - инициировать сборку на других заданиях (назовите их SMALLJOB) с помощью Parameterized Trigger Plugin, затем дождитесь их завершения. Что мне нужно сделать, так это восстановить артефакты из инициированной сборки на SMALLJOB.
Первоначально я думал, что могу использовать
Copy Artifact Plugin для извлечения артефактов из "последней сборки" запускаемого SMALLJOB. И это работает надежно, когда одновременно работает только один SMALLJOB.
Но у меня запущено несколько BIGJOBs, все запуская несколько SMALLJOB, так что использование "последней сборки" недостоверно двух завершенных SMALLJOBs.
Существует ли более надежный способ получения артефактов из конкретной последующей работы? Если бы я мог просто получить номер сборки, я мог бы использовать завиток, чтобы получить артефакты.
Ответы
Ответ 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