Я пытаюсь понять, как смоделировать процесс сборки в Hudson. В настоящее время большинство наших сборок hudson несколько жестко запрограммированы, так как процесс сборки представляет собой последовательность шагов, и у нас есть один процесс на ветвь.
У меня есть другая система сборки, которая имеет много активных ветвей, и каждая сборка имеет серию интеграционных тестов, для выполнения которых требуется набор машин. Когда я переезжаю из дома, выросшего в Гудзон, я не совсем уверен, как правильно смоделировать это, чтобы сохранить затраты на устойчивость и время сборки до минимума
Вот моя основная сборка:
- создать рабочее пространство
- компиляция, ссылка, пакет
- передача артефактов в тестовые системы
- вызывает тестовый жгут на нескольких системах для проведения установки и приемочных испытаний
- собрать результаты
- опубликовать результаты
Я бы хотел, чтобы частью интеграции была группа общих машин (возможно, эластичная группа), которая может выполнять интеграционные тесты для любой ветви. Я хочу запустить как можно больше параллельно, чтобы сократить время сборки. Похоже, что лучший способ выполнить параллельно на hudson - разбить шаги на задания и использовать плагин Parameterized Trigger для настройки общих заданий.
Итак, у меня есть две основные работы: сборка, тестирование
У меня может быть работа по сборке для каждой ветви и общая тестовая работа. Задание компоновки будет использовать Parameterized Trigger Plugin для вызова тестового задания и определения местоположения артефактов компоновки. Тестовое задание будет вызывать серию параллельных заданий, передавая параметры для ветви, артефакт.
тестовое задание
test-client-install (параметры: расположение артефакта, филиал)
test-server-install (параметры: местоположение артефакта, ветка)
тестовый запуск (параметры: клиентский компьютер, серверный компьютер)
присоединиться - собрать результаты (параметры: клиентский компьютер, серверный компьютер)
Каждое из тестовых заданий * вытягивает раба из группы рабов и выполняет. Я не совсем уверен, как сообщить подчиненным, выполняющим задания клиента и сервера, как найти друг друга, и я не уверен, как зарезервировать их из пула и освободить их обратно в него.
Полагаю, у меня могут быть свойства записи в общий ресурс, и подзадачи могут использовать его для взаимодействия между заданиями.
Кто-нибудь создавал подобные сложные настройки в hudson или обычно это делается в другой системе, с которой взаимодействует hudson (hudson + STAF с ресурсами управления STAF)?