Дженкинс: Как решить, какое из следующих заданий должно быть выполнено? - PullRequest
0 голосов
/ 26 октября 2011

У меня есть цепочка заданий, которая создает приложение. Давайте назовем эту цепочку 1.

Я хочу включить эти шаги также в середину другой цепочки заданий (цепочка 2). Если я это сделаю, то последнее задание цепочки 1 получит следующее задание, которое я не могу контролировать, если не хочу создавать исходное звено 1.

   J1  
   |  
J2 J2  
|  |  
J3 J3  
   |
   J4

Я не хочу дублировать J2 и J3, но это невозможно, не так ли?

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Я нашел решение, вдохновленное другим ответом здесь, на stackoverflow.com: Jenkins - условия между этапами сборки

В предшествующем задании я записываю временный файл с пакетным заданием Windows:

echo call_conditional_next_job = true > c:\temp\build.properties

Для считывания файла свойств и установки некоторых переменных среды я использую «Плагин Jenkins Environment Injector». Несколько работ позже в цепочке я добавил следующее пакетное задание Windows:

Несколько заданий в цепочке. Я использую «Плагин Jenkins Environment Injector» для считывания файла свойств. Затем в том же задании я использую следующее пакетное задание Windows для условного запуска задания условного задания следующего задания:

IF "%call_conditional_next_job%"=="true" wget http://localhost:8080/job/conditional-next-job/build?delay=0sec  
IF NOT "%call_conditional_next_job%"=="true" echo "do not call conditional-next-job."

Если найдется более элегантный способ отправить переменную окружения в поток ... Было бы неплохо знать.

0 голосов
/ 27 октября 2011

Если J1 и J3 имеют общий файл с отпечатками пальцев, возможно, есть способ заставить это работать.

  1. Измените задание J1 так, чтобы оно вызывало J2 в конце сборки (что, в свою очередь, вызывает J3).
  2. Измените задание J1, чтобы процесс продвижения, который запускается науспешное завершение J3 вниз по течению.В качестве действия процесса продвижения добавьте сборку Trigger для другого проекта и укажите J4 в качестве проекта для сборки.
0 голосов
/ 27 октября 2011

Не так, как вы описываете.

Однако боль не так уж и плоха.В диалоговом окне «Новое задание» вы можете скопировать другое ранее существующее задание, поэтому все, что вам нужно сделать, это скопировать J2 и J3 и изменить тег «build after» для J3.Существуют плагины для фильтрации заданий, если вы не хотите, чтобы оба набора заданий появлялись на одной странице сборки.

...