Опыт работы с проектом Hudson - Building matrix
-
05-07-2019 - |
Вопрос
Кто-нибудь пробовал эту функцию и имеет какие-то отзывы?Или кто-нибудь знает какие-нибудь полезные образцы для поиска?
Решение
Я пробовал эту функцию несколько месяцев назад, но больше ею не пользуюсь (просто потому, что она мне не нужна, а не потому, что это плохая функция).
По сути, вы определяете n осей, каждая ось представляет собой свойство с несколькими значениями.
Давайте рассмотрим пример:вы определяете ось "JDK" с возможным значением "1.4", "1.5", "1.6", и вы определяете другое свойство "база данных", где возможными значениями являются "oracle", "mysql".
Таким образом, Hudson запустит вашу сборку 6 раз:
- с JDK 1.4, с базой данных свойств = oracle (т.е.JVM запускается с помощью -Ddatabase=oracle)
- с JDK 1.5, с базой данных свойств =oracle
- с JDK 1.6, с базой данных свойств =oracle
- с JDK 1.4, со свойством database=mysql
- с JDK 1.5, со свойством database=mysql
- с JDK 1.6, со свойством database=mysql
Затем, как только все будет завершено, вы сможете увидеть результаты для каждой итерации.
Эта функция может быть действительно полезной, когда вам нужно протестировать ваше приложение в нескольких средах (в моем примере, с разными версиями JDK или базы данных).
Обратите внимание, что за исключением оси JDK, вы должны самостоятельно управлять свойством, указанным Хадсоном в качестве записи.В моем примере приложение должно учитывать само свойство "база данных".В конце концов, хорошей идеей будет использовать это свойство для включения определенного профиля в конфигурации Maven2, если ваш проект является mavenized (см. здесь для получения более подробной информации об этом).
Я надеюсь, что мои объяснения достаточно ясны :)
Другие советы
Матричные сборки имеют ряд проблем:
- В целом несовместимы с плагинами - они становятся лучше, но вам нужно постоянно быть в курсе последних событий.
- Артефакты - выкручиваться гораздо сложнее - URL-адреса немного более неудобны, их поиск в FS (чего вам все равно следует избегать) теперь превратился в кошмар.
И это позор, потому что концепция очень хороша и очень удобна там, где она работает.
Редактировать
- Невозможность запустить отдельные точки.
Наш обычный способ обойти эту проблему - настроить параметризованные сборки для одновременного выполнения, что сопряжено со своими проблемами, но избавляет нас от множества заданий с одним и тем же кодом и разными константами.