Опыт работы с 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 (которых вы должны избегать в любом случае) теперь стало кошмаром.
Это позор, потому что концепция очень хорошая и очень удобная там, где она работает.
редактировать
- Невозможность начать отдельные точки.
Наш обычный способ - это настроить параметризованные сборки для одновременной работы, что сопряжено со своими проблемами, но избавляет нас от множества заданий с одним и тем же кодом и разными константами.