Как определить, что должно быть построено на основе коммитов в многомодульном проекте gradle?
Я работаю над проектом, в котором более 700 модулей, и у нас есть инструмент сборки gradle для сборки этого проекта. Мы настроили CI для этого проекта в Bamboo. Так что в основном это многомодульный проект, а из Bamboo CI это требует как минимум 2 или более 2 часа на сборку всего проекта. Есть ли способ, которым мы можем построить только те модули, которые фактически изменены. Я знаю, что в Gradle есть
gradle -a build
Например, если у нас есть проект со структурой модуля ниже, где каждый модуль зависит от модуля над ним. Таким образом, сервисы модуля зависят от общего, а сеть модуля зависит от сервисов:
.
├── common
├── services
└── web
Когда мы хотим построить сервисный модуль, мы идем в каталог сервисов и выполняем задачу сборки, а затем он выполняет сборку сервиса и общую зависимую сборку, но если я использую -a
или же -no-rebuild
опция, позволяющая Gradle пропустить зависимости проекта, он будет создавать только сервисы, как показано ниже
$ gradle -a build
:services:compileJava
:services:processResources
:services:classes
:services:jar
:services:assemble
:services:compileTestJava
:services:processTestResources
:services:testClasses
:services:test
:services:check
:services:build
Это то, что я делаю в своем локальном, и я знаю, что нет изменений в общем модуле, но я собираюсь настроить вещи в моем инструменте CI (Bamboo). Как я могу добиться этого, если нет изменений в этом модуле тогда нет необходимости собирать его или пропускать и переходить к другому модулю, и если в исходном коде есть изменения, то собирайте его.
Я думаю, что мы должны убедиться, что
- Определите, изменился ли исходный код для конкретного модуля или нет.
- Если изменение, то соберите модуль, а также соберите модуль, от которого он зависит.
Может кто-нибудь сказать мне, как достичь этой цели? Это действительно сэкономит время CI, потому что в настоящее время для сборки требуется более 2 часов.
Это то, что мы можем достичь с помощью дополнительной поддержки сборки?