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