#hudson #jenkins #hudson-plugins
#хадсон #Дженкинс #хадсон-плагины
Вопрос:
У меня есть серия заданий Hudson, которые я хочу запустить для тестирования различных сборок:
- Сборка 1.17 на сервере X
- Сборка магистрали на сервере X
- Тест1
- Тест2
Я хочу выполнять эти задания последовательно, при этом каждое задание ожидает завершения другого: сборка 1.17, Test1, Test2, сборка магистрали, Test1, Test2
С другой стороны, у меня есть два других задания Test3 и Test4, которые можно запускать параллельно и сразу после сборки магистрали.
Я бы предпочел не связывать несколько заданий вместе из раздела «Этапы после сборки» каждого задания, но это единственный способ заставить их выполняться последовательно. Проблемы с этим заключаются в следующем: 1) Дублирование заданий: мне нужно 2 копии Test1 и Test2: сборка 1.17-> Test1 -> Test2 -> Сборка магистрали -> Test1 (копия для магистрали) -> Test2 (копия для магистрали). 2) Больше дублирования: мне нужна другая магистраль сборки, чтобы я не запускал Test1 каждый раз, когда хочу запустить Test3 и Test4.
Есть ли простой способ заставить задания работать последовательно без изменения отдельных заданий и создания зависимостей между ними за пределами задания верхнего уровня?
ОБНОВЛЕНИЕ: В конечном итоге мы использовали файлы Rakefile для управления всем процессом. Ни один из плагинов не был достаточно надежным для этого. Задание Хадсона вызывает файл Rakefile с аргументами, который вызывает другие задания Хадсона.
Ответ №1:
Взгляните на плагин Locks and Latches — он позволяет настраивать более сложные зависимости сборки без необходимости дублирования ваших заданий.
Комментарии:
1. Работает нормально. Я настроил пользовательскую блокировку в меню управление Хадсоном / настройка. Следует отметить, что задания будут запускаться параллельно даже при блокировке, но они будут просто зависать, пока блокировка не будет снята, так что все работает нормально, даже если это не похоже на основной экран Хадсона / Дженкинса.
2. Хммм, итак, я настроил полный запуск, и блокировки работают, но задания выполняются не по порядку, и задания не повторяются. Итак, если я запускаю сборку 1.17, тест, сборку 1.18, тест, задания не выполняются одновременно, но … порядок выполнения произвольный, и тестовое задание не выполняется дважды : * (
Ответ №2:
Взгляните на (относительно новый) плагин Multijob. Затем вы можете определить несколько фаз, которые выполняются последовательно, при этом все задания в рамках фазы выполняются параллельно. Для вашего примера настройте 6 фаз. Фаза 1 запуск сборки 1.17, фаза 2 запуск теста 1 и т.д. На этапе 5 (после сборки магистрали) вы можете запустить тест 3 и тест 4 параллельно.
Кроме того, создайте два отдельных конвейера с помощью плагина Build Pipeline, чтобы запускать каждый конвейер вручную.
Кстати, плагин Locks and Latches устарел, заменен плагином Throttle Concurrent Builds. Это работает как шарм, чтобы избежать, например, одновременного запуска заданий Test 3 и Test 4 на одном подчиненном устройстве (и перегрузки подчиненного устройства).
Комментарии:
1. На самом деле, некоторые ребята на работе придумали внутренний инструмент, который позволяет нам управлять заданиями последовательно и последовательно с помощью задач rake. Это работает очень надежно и значительно лучше, чем делать что-то в самом Хадсоне.