Несколько микросервисов в одном git-хранилище - эффективный конвейер сборки - PullRequest
0 голосов
/ 12 июня 2018

В нашей организации мы поддерживаем один репозиторий git, из которого мы строим несколько микросервисов.Мы используем Java (пружинную загрузку) и maven для построения сервисов.

Каждый микросервис находится в своем собственном модуле maven + есть «общие» (инфраструктурные) модули, которые появляются (включаются как зависимости) во всех наших микросервисах.

В настоящее время мы не продвигаем версии артефактов maven: всегда запускайте с 0.1-SNAPSHOT в maven и выполняйте процесс CD, т.е. каждый коммит достигает наших серверов

Теперь яМы ищем эффективный способ создания нашего материала.

В настоящее время у нас есть Jenkins с рабами, которые по требованию работают в облаке при каждом коммите.У нас есть одно задание Jenkins на микросервис.

Когда кто-то выполняет коммит, мы запускаем сборки для всех микросервисов, , даже если зафиксированные файлы используются только одним микросервисом сследующая команда:

mvn --projects backend/microsevice-a --also-make
mvn --projects backend/microsevice-b --also-make
....
mvn --projects backend/microsevice-N --also-make

Итак, мы каждый раз собираем микросервис со всеми его зависимостями, что не оптимально.

Я ищу способ использовать сборку только модулейкоторые содержат код, который был изменен во время последнего коммита (ов)

Одним из решений, о котором мы думали, является использование nexus / artifactory и введение полноценной поддержки версий, так что каждый раз, когда jenkins строит свои вещи, этоопубликует версию, скажем, в артефакте, так что позже Дженкинс сможет вынуть «готовые» версии из артефакта, но это выглядит очень сложным подходом, потому что я не смогу реально отследить, какая зависимость вкакая версия была развернута с моим микросервисом.

Поскольку я не являюсь разработчиком / разработчиком DevOps, яруд к следующему подходу:

  • Создайте некоторый плагин (maven / Jenkins) - который может анализировать информацию из последнего коммита, анализировать дерево зависимостей всего бэкэнд-проекта и выяснять, какие микросервисы должны бытьперестроен, но похоже на кастомную разработку, я не уверен, что другие люди делают, может быть, он уже доступен в Jenkins / maven - я не знаю ...

Пожалуйста, поделитесьВаше мнение об этих подходах / предложить альтернативы Помощь приветствуется:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...