Хадсон / Дженкинс - параллельные и серийные конвейеры и повторное использование заданий - PullRequest
3 голосов
/ 12 октября 2011

У меня есть ряд заданий Hudson, которые я хочу выполнить для тестирования различных сборок:

  1. Сборка 1.17 на сервере X
  2. Сборка магистрали на сервере X
  3. Test1
  4. Test2

Я хочу выполнять эти задания последовательно с каждым заданием, ожидающим завершения другого: сборка 1.17, Test1, Test2, сборка магистрали, Test1, Test2

С другой стороны, у меня есть два других задания: Test3 и Test4, которые можно запускать параллельно и сразу после Build Trunk.

Я бы предпочел не связывать несколько заданийвместе с разделом пост-этапов каждой работы, но это единственный способ заставить их работать последовательно.Проблемы с этим: 1) Дублирование задания: мне нужно 2 копии Test1 и Test2: сборка 1.17-> Test1 -> Test2 -> Build Trunk -> Test1 (копия для транка) -> Test2 (копия для транка).2) Больше дублирования: мне нужна другая сборка, поэтому я не запускаю Test1 каждый раз, когда хочу запустить Test3 и Test4.

Существует ли простой способ, позволяющий заданиям работать последовательно, без изменения отдельных заданий исоздание зависимостей между ними вне задания верхнего уровня?

Is such a thing even possible

ОБНОВЛЕНИЕ: В конечном итоге мы использовали Rakefiles для управления всем процессом.Ни один из плагинов не был достаточно надежным для этого.Задание hudson вызывает файл Rakefile с аргументами, который вызывает другие задания hudson.

Ответы [ 2 ]

3 голосов
/ 12 октября 2011

Взгляните на плагин Locks and Latches - он позволяет вам устанавливать более сложные зависимости сборки без необходимости дублировать ваши задания.

2 голосов
/ 04 февраля 2012

Взгляните на (относительно новый) Multijob Plugin .Затем вы можете определить несколько этапов, которые выполняются последовательно, причем все задания внутри фазы выполняются параллельно.Для вашего примера настройте 6 фаз.Фаза 1, выполняющая сборку 1.17, фаза 2, выполняющая тест 1 и т. Д. На фазе 5 (после сборки магистрали) можно параллельно выполнять тест 3 и тест 4.

В качестве альтернативы, можно построить два отдельных конвейера с помощью Построить плагин конвейера , чтобы запустить каждый конвейер вручную.

Кстати, плагин Locks and Latches устарел, заменен плагином Throttle Concurrent Builds.Это работает как талисман, чтобы избежать, например, одновременного запуска заданий Test 3 и Test 4 на одном и том же ведомом устройстве (и перегрузке ведомого).

...