Опыт работы с проектом Hudson - Building matrix

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

Ответ 1

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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


Изменить

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

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