Построить конвейеризацию и непрерывную интеграцию с Maven и Hudson - PullRequest
3 голосов
/ 07 мая 2010

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

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

Есть ли способ выполнить конвейеризацию с помощью CI, используя Maven? Предполагая, что есть, есть ли способ сообщить Хадсону об использовании ресурсов, созданных на предыдущем этапе, на следующем?

Ответы [ 3 ]

1 голос
/ 07 мая 2010

Не думаю, что это хорошо поддерживается (см. совместное использование артефактов сборки между заданиями в hudson ) и даже меньше при использовании Maven.

0 голосов
/ 01 июля 2011

У меня был хороший успех в конвейерной сборке Maven в CI (хотя с Bamboo, а не с Hudson). Я использовал GMaven для запуска сценария, который создает одноразовое использование pom.xml. Сгенерированный pom.xml содержит:

  • A <property> для каждого свойства, определенного на этапе 1
  • A <dependency> для каждой зависимости, которая понадобится на этапе 2 (т. Е. Путь к классу теста). Ключ должен использовать scope=system и включать путь к артефакту, который был построен на предыдущем этапе.

Затем он архивируется вместе со встроенными артефактами и передается на этап 2. Вы можете легко превратить его в плагин Maven, особенно если вы используете GMaven.

Я писал о конвейере сборки здесь , но подробностей о его части в Maven нет.

0 голосов
/ 10 мая 2010

В дополнение к общему подходу простого обмена артефактами сборки через внешний репозиторий (например, структурированный общий доступ к файлам), вы можете либо архивировать артефакты, необходимые с опциями Hudson's on board, либо использовать Clone Workspace Plugin . Взгляните на вопрос HUDSON-682 , который позволил создать этот плагин.

...