Получить номер сборки или артефакты нисходящей сборки в Jenkins
У меня есть работа (назовите ее BIGJOB) в Jenkins; несколько шагов сборки должны вызвать сборки на других заданиях (назовите их SMALLJOB) с помощью Параметризованный Триггер Plugin затем дождитесь их завершения. Что мне нужно сделать, так это получить артефакты из запущенной сборки на SMALLJOB.
Первоначально я думал, что смогу использовать Копировать Артефакт Плагин для извлечения артефактов из "последней сборки" инициированного SMALLJOB. И это работает надежно когда только одно SMALLJOB бежать одновременно.
но у меня есть несколько BIGJOBs работает, все запускает несколько SMALLJOBs, так что использование "последней сборки" ненадежно двух SMALLJOBs закончить в то же время.
есть ли более надежный способ получения артефактов от конкретной низовой работе? Если бы я мог просто получить номер сборки, я мог бы использовать curl для получения артефактов.
3 ответов
просто если любой (другой) stumples через этот вопрос в будущем:
при использовании параметризованного плагина триггера в качестве шага сборки, если триггер настроен с включенным "блоком, пока запущенные проекты не завершат свои сборки", для дальнейших шагов сборки доступны следующие переменные среды:
- 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_{имя проекта}= "количество сборок, запущенных для проекта"
см. дополнительную информацию на веб-сайте плагина-ссылка в вопросе.
нашел свой собственный ответ. Не так просто, как плагин или уже установленная переменная, но она работает.
используйте API Jenkins XML с глубиной=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 (тот, который был запущен этим BIGJOB). Затем используйте этот номер в http download from Jenkins, чтобы получить архивированные файлы сборки.
вы можете обратиться к этой функции :
Дженкинс Построить где можно найти :
jenkinsapi.прикладной программный интерфейс.block_until_complete(jenkinsurl, вакансии, maxwait=12000, интервал=30, raise_on_timeout=true, то имя пользователя=нет, пароль=нет)
jenkinsapi.прикладной программный интерфейс.get_artifacts(jenkinsurl, идентификатором jobid=нет, build_no=нет, имя пользователя=нет, пароль=нет)
jenkinsapi.прикладной программный интерфейс.get_build(jenkinsurl, jobname, build_no, username=нет, пароль=нет)
jenkinsapi.прикладной программный интерфейс.get_latest_build (jenkinsurl, jobname, username=нет, password=нет)
jenkinsapi.прикладной программный интерфейс.get_latest_complete_build (jenkinsurl, jobname, username=нет, password=нет)
jenkinsapi.прикладной программный интерфейс.get_latest_test_results (jenkinsurl, jobname, username=нет, password=нет)
jenkinsapi.прикладной программный интерфейс.get_nested_view_from_url (url, username=None, password=None)
jenkinsapi.прикладной программный интерфейс.get_view_from_url(URL-адрес, имя пользователя=нет, пароль=нет)
jenkinsapi.прикладной программный интерфейс.grab_artifact (jenkinsurl, jobid, artifactid, targetdir, username=None, password=None)
jenkinsapi.прикладной программный интерфейс.install_artifacts (артефакты, dirstruct, installdir, basestaticurl)
jenkinsapi.прикладной программный интерфейс.search_artifact_by_regexp (jenkinsurl, jobid, artifactRegExp, username=None, password=None)