Получить номер сборки или артефакты последующей сборки в Jenkins - PullRequest
22 голосов
/ 20 августа 2011

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

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

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

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

Ответы [ 3 ]

27 голосов
/ 25 июня 2013

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

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

  • 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_ {имя проекта} = "Количество построений, запущенных для проекта"

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

10 голосов
/ 23 августа 2011

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

Используйте XML-интерфейс 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 (тот, который был запущен этим BIGJOB).Затем используйте этот номер в http-загрузке от Jenkins, чтобы получить архивированные файлы сборки.

0 голосов
/ 12 апреля 2016

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

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

jenkinsapi.api.block_until_complete (jenkinsurl, jobs, maxwait = =12000, интервал = 30, повысить_on_timeout = истина, имя пользователя = нет, пароль = нет)

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

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

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

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

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

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

jenkinsapi.ap.grab_artifact (Дженкинсурл, Джобид, Артефактид,TARGETDIR, имя пользователя = None, пароль = None)

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

jenkinsapi.api.search_artifact_by_regexp (jenkinsurl, JobID, artifactRegExp, имя пользователя =Нет, пароль = Нет)

...