Какой шаблон вы используете для выполнения общих шагов на пуле машин?

Я пытаюсь понять, как смоделировать свой процесс сборки в 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)?


person Peter Kahn    schedule 25.06.2010    source источник


Ответы (1)


Несколько мыслей. Чем меньше у вас рабочих мест, тем легче их поддерживать. Чем больше у вас заданий, тем гибче вы будете и больше сможете выполнять параллельно. Поскольку вы сделали упор на быстрое время сборки, обратите внимание на плагин присоединения , чтобы запустить несколько заданий параллельно, а когда все они будут выполнены, перейти к другому заданию в этой цепочке.

Если ваш сервер достаточно большой, вы можете немного поэкспериментировать с плагин клонирования рабочей области. Это поможет вам уменьшить необходимость в ручном копировании файлов между заданиями и в плагине параметризованного триггера.

Зарезервировать раба легко. Вы можете сгруппировать подчиненные устройства с помощью меток. В своей работе вы определяете, какой ярлык должен иметь ваш узел, чтобы выполнять свою работу. Узел может иметь более одной метки, и ваша работа может быть привязана к нескольким меткам. Таким образом, Хадсон решает, где разместить вашу работу, в зависимости от наличия. Если ваши ведомые устройства имеют более одной очереди сборки, они могут запускать два задания параллельно. Я не использовал плагин блокировки и фиксации для синхронизации между узлами. Поэтому я не знаю, есть ли блокировки только для каждого узла или для всей установки Hudson. Защелки пока не поддерживаются. Если вам нужно убедиться, что два задания должны выполняться на одном ведомом устройстве, попробуйте объединить их, иначе вы потеряете преимущество Hudson по свободному распределению ваших заданий по доступным узлам.

person Peter Schuetze    schedule 25.06.2010