Дженкинс Парамеризованный Триггер + Копировать Артефакт

9

Я работаю над настройкой Jenkins для обработки наших сборок. Сборка релиза состоит из установщика Windows, включающего несколько двоичных файлов, которые должны быть собраны в Linux.

Вот что у меня так далеко:

  • Часть Windows и часть Linux настроены как отдельные проекты Jenkins.
  • Проект Windows параметризован с использованием тега Subversion для сборки и выпуска.
  • В рамках своей сборки проект Windows запускает сборку того же тега Subversion для проекта Linux (с использованием плагина Parameterized Trigger ), а затем копирует артефакты из проекта Linux (с помощью плагина Copy Artifact ) в рабочую область проекта Windows, чтобы они могут быть включены в установщик Windows.

Где я застрял: Прямо сейчас, Копировать Артефакт настроен для копирования последней успешной сборки. Кажется, более надежно настроить копирование артефакта для копирования из точной сборки, которую сработал триггер Parameterized, но у меня возникли проблемы с выяснением, как заставить это работать. Есть опция для параметра «build selector», который, я думаю, призван помочь с этим, но я не могу понять, как он должен быть настроен (и слепо экспериментировать с различными возможностями несколько болезненно, когда сборка занимает час или два, чтобы найти успех или неудачу).

Как мне это настроить? Как работает селектор сборки?

Джош Келли
источник

Ответы:

11

После того, как вы завершите триггерную сборку, у вас будет новая переменная env, установленная в номер сборки этой запущенной сборки, под названием TRIGGERED_BUILD_NUMBER_ <имя задания>. Вы можете использовать это, чтобы специально скопировать обратно артефакты:

  1. Сборка Windows (называемая « WindowsBuild ») вызывает сборку Linux (называемую « LinuxBuild ») с помощью плагина Parameterized Trigger.

    У вас есть эта часть, просто убедитесь, что установлен флажок Блокировать до тех пор, пока запущенные проекты не завершат сборку и не завершат сборку, если сборка Linux не удалась.

  2. Далее в копировании артефактов из другого шага проекта :

    Название проекта: LinuxBuild

    Какая сборка: конкретная сборка

    Номер сборки: $ TRIGGERED_BUILD_NUMBER_LinuxBuild (во всех именах проектов символы не a-zA-Z или 0-9 заменены на _; несколько символов сведены в один _).

Байрон Браммер
источник
переменная среды $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> должна быть установлена ​​вручную? Я не могу найти его ни в восходящих, ни в последующих переменных среды.
Harish
1
Из вики-плагина обнаружено, что $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> устанавливается автоматически, если установлен флажок «Блокировать до тех пор, пока запущенные проекты не завершат свои сборки».
Harish