Опыт работы с Hudson - строительный матричный проект - PullRequest
23 голосов
/ 08 января 2009

Кто-нибудь пробовал эту функцию и есть отзывы? Или кто-нибудь знает какие-нибудь полезные образцы для поиска?

Ответы [ 2 ]

27 голосов
/ 08 января 2009

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

По сути, вы определяете n Ось, каждая ось является свойством с несколькими значениями.

Давайте рассмотрим пример: вы определяете Ось "JDK" с возможными значениями "1.4", "1.5", "1.6" и определяете другое свойство "база данных", где возможными значениями являются "оракул", " MySQL».

Таким образом, Хадсон запустит вашу сборку 6 раз:

  • с JDK 1.4, с базой данных свойств = oracle (т.е. JVM запускается с -Ddatabase = oracle)
  • с JDK 1.5, с базой данных свойств = oracle
  • с JDK 1.6, с базой данных свойств = oracle
  • с JDK 1.4, с базой данных свойств = mysql
  • с JDK 1.5, с базой данных свойств = mysql
  • с JDK 1.6, с базой данных свойств = mysql

Затем, когда все будет завершено, вы сможете увидеть результаты для каждой итерации.

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

Обратите внимание, что за исключением оси JDK, вы должны самостоятельно управлять свойством, заданным в качестве входа Хадсоном. В моем примере приложение должно учитывать само свойство «database». В конце концов, хорошая идея - использовать это свойство для включения определенного профиля в конфигурации Maven2, если ваш проект mavenized (см. здесь для получения более подробной информации об этом).

Надеюсь, мои объяснения достаточно ясны:)

6 голосов
/ 02 июня 2011

Матричные сборки имеют ряд проблем:

  • Широко несовместимы с плагинами - они становятся лучше, но вы должны постоянно обновляться.
  • Артефакты - намного труднее их вывернуть - URls стали немного более неловкими, найти их на FS (которых вы должны избегать в любом случае) теперь стало кошмаром.

Какой позор, потому что концепция очень хорошая и очень удобная там, где она работает.


Редактировать

  • Невозможность начать отдельные точки.

Наш обычный способ обойти это - настроить параметризованные сборки для одновременной работы, что сопряжено со своими проблемами, но избавляет нас от множества заданий с одним и тем же кодом и разными константами.

...