Как да направите непрекъсната интеграция с Hudson за многомодулни проекти на Maven 3 добре?

Сегашното ми впечатление е, че е невъзможно да се направи CI за многомодулен проект на Maven 3 добре с помощта на Хъдсън (или Дженкинс).

Ситуацията изглежда е такава, че имате 2 реалистични опции за изграждане на многомодулен проект Maven 3 с Hudson:

  1. Проект със свободен стил може също да изгражда проекти на Maven и с инкременталната/рекурсивна опция очевидно трябва да може да се справи с изграждането само на необходимите поддървета на пълното дърво на проекта.

  2. Наследство, силно остаряло, с много предупреждения, наследена компилация на Maven2/3.

При първата опция има значителен недостатък, че целият ви проект изглежда като едно голямо петно ​​в Hudson, няма видимост на отделните подпроекти и няма опция за изграждане на отделни подпроекти и зависими от тях.

С втората опция трябва основно да преглътнете много малко вяра, предизвикващи предупреждения за наследство и „не използвайте“, за да разберете, че да, това ще изгради вашия многомодулен проект, но функционалността за задействане на компилации на подпроекти е напълно нарушена и там няма намерение да поправя това.

Единствената алтернатива, която мога да разбера, е да се върна към Maven 2 за изграждането на сървъра, в който случай изглежда, че наследеният плъгин работи и дори отделните компилации на подпроекти могат да бъдат задействани. Но тогава съм заседнал на Maven 2.

Смятам, че изискванията ми са доста консервативни, но съм напълно възпрепятстван от липсата на поддръжка на Maven в Hudson/Jenkins. Ето какво бих очаквал:

  • способност за разпознаване на многомодулни проекти и изграждането им с помощта на Maven 3
  • възможност за "инкрементални" компилации на такъв многомодулен проект (т.е. само променени модули и зависими от тях)
  • възможност да видите текущото състояние на многомодулния проект и кой подмодул е ​​неуспешен/успешен/нестабилен

Въпросният проект Maven се състои от около 84 модула Maven в многомодулна конфигурация с общ родител и разделяне на различни подсистеми. Ние използваме Hudson 3.1.0.

Имам ли някакъв шанс да постигна това?


person Boris Terzic    schedule 14.01.2014    source източник
comment
Каква версия на Jenkins/Hudson използвате?   -  person Nathaniel Waisbrot    schedule 14.01.2014
comment
Използваме Hudson 3.1.0, добавихме го към публикацията.   -  person Boris Terzic    schedule 15.01.2014


Отговори (2)


Да, невъзможно е да го направите добре с текущия тип проект Maven 2/3.

Направих го достатъчно добре, като използвах тип матрица/многоконфигурационен проект и добавих ръчно ос „Модул“. Конфигурирането на задачата на матрицата е мъка и трябва да помните да актуализирате оста си всеки път, когато добавяте, премахвате или преименувате модул. Но след като конфигурацията е завършена, това решение работи добре за изграждане. Можете да видите резултатите от компилацията и теста за всеки модул поотделно или интегрирани под заданието на матрицата.

person Paul Hicks    schedule 14.01.2014
comment
Благодаря, че потвърди здравия ми разум. :) Правенето на ръчна конфигурация на модулите е това, което се надявах да предотвратя. Знаете ли за някакви инструменти за генериране на съответната конфигурация? - person Boris Terzic; 15.01.2014
comment
Не. Също така не знам някой друг да е правил това, така че може да няма такъв инструмент. Може да успеете да създадете задание, което изгражда или актуализира заданието на матрицата вместо вас, и бърз поглед към API предполага, че това е възможно, но никога не съм го опитвал. Току-що намерих добавката DynamicAxis; комбинирането на това с параметризирана добавка за задействане може да е по-лесно. - person Paul Hicks; 15.01.2014

Моят колега работи върху внедряването на многомодулна функционалност на Maven 3 в Jenkins.

https://github.com/adamcin/maven-plugin

Не съм сигурен какъв е статусът на приемане нагоре по веригата.

person Electrawn    schedule 20.01.2014