Опыт работы с Hudson - строительный матричный проект

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

2 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Другие вопросы по тегам