Какой шаблон вы используете для выполнения общих шагов в пуле машин - PullRequest
1 голос
/ 25 июня 2010

Я пытаюсь понять, как смоделировать процесс сборки в Hudson. В настоящее время большинство наших сборок hudson несколько жестко запрограммированы, так как процесс сборки представляет собой последовательность шагов, и у нас есть один процесс на ветвь.

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

Вот моя основная сборка:

  • создать рабочее пространство
  • компиляция, ссылка, пакет
  • передача артефактов в тестовые системы
  • вызывает тестовый жгут на нескольких системах для проведения установки и приемочных испытаний
  • собрать результаты
  • опубликовать результаты

Я бы хотел, чтобы частью интеграции была группа общих машин (возможно, эластичная группа), которая может выполнять интеграционные тесты для любой ветви. Я хочу запустить как можно больше параллельно, чтобы сократить время сборки. Похоже, что лучший способ выполнить параллельно на hudson - разбить шаги на задания и использовать плагин Parameterized Trigger для настройки общих заданий.

Итак, у меня есть две основные работы: сборка, тестирование

У меня может быть работа по сборке для каждой ветви и общая тестовая работа. Задание компоновки будет использовать Parameterized Trigger Plugin для вызова тестового задания и определения местоположения артефактов компоновки. Тестовое задание будет вызывать серию параллельных заданий, передавая параметры для ветви, артефакт. тестовое задание test-client-install (параметры: расположение артефакта, филиал) test-server-install (параметры: местоположение артефакта, ветка) тестовый запуск (параметры: клиентский компьютер, серверный компьютер) присоединиться - собрать результаты (параметры: клиентский компьютер, серверный компьютер)

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

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

Кто-нибудь создавал подобные сложные настройки в hudson или обычно это делается в другой системе, с которой взаимодействует hudson (hudson + STAF с ресурсами управления STAF)?

1 Ответ

0 голосов
/ 25 июня 2010

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

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

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

...