У нас есть продукт, который состоит из многих проектов Maven, которые зависят друг от друга. Все эти проекты Maven объединяются в один проект, который доставляет конечный продукт.
Проекты Maven имеют один и тот же жизненный цикл. Другими словами, они не управляются отдельными группами людей с явными изменениями <dependency>
для поиска новых версий других проектов. Скорее, когда кто-то что-то изменяет в одном из проектов, результат должен перейти непосредственно в конечный продукт без дополнительных изменений.
Мы используем Jenkins в качестве инструмента непрерывной интеграции.
Основные пожелания, которые мы имеем, следующие:
- Не нужно копировать все межпроектные зависимости в конфигурацию Jenkins: они должны находиться в одном месте, в идеале - в файлах
pom.xml
. - Избегайте ненужных сборок: при изменении SCM создавайте только потенциально затронутые проекты.
- В случае зависимости от алмаза (C зависит как от B1, так и от B2, которые оба зависят от A), если нижний (A) изменяется, то конечный продукт (C) всегда должен использовать версию A, которая также была используется для сборки/тестирования B1 и B2.
Вопрос: Каков наилучший подход для этого с Дженкинсом?
В настоящее время мы думаем использовать одно задание, используя плагин Jenkins Pipeline, который анализирует зависимости Maven и изменения SCM, решает, что нужно построить и в каком порядке, а затем фактически создавать проекты.