Я бы рекомендовал использовать отдельные репозитории для каждого микросервиса.Вы используете микросервисы для предотвращения монолитов и имеете небольшие четко определенные сервисы;представляется целесообразным также разделить их по пространству, т.е. хранить их в отдельных репозиториях (например, упростить их повторное использование).
Затем вам потребуется предоставить файл Jenkins в каждом репо.Они будут в основном идентичны.
Если вы хотите быстрые циклы выпуска, вы можете автоматически развернуть один сервис после выпуска.В качестве альтернативы вы можете использовать дополнительный модуль подготовки релизов, который обрабатывает полное развертывание.В обоих случаях я бы использовал файл docker-compose, который обрабатывает взаимосвязь между сервисами.Вы можете принудительно установить правильный порядок, используя 'depen_on, links, volume_from и network_mode: "service: ..." ".Для полной ссылки см. документацию докера .
Если вы хотите сохранить свой единственный репозиторий, ваш Jenkinsfile (ы) должен быть довольно хакерским, я полагаю ... После каждого коммита вылибо
соберет все модули -> монолитное поведение
так или иначе определит, какие модули были изменены (например, просмотрев журнал git) -> То же поведение, что и в случае с несколькими модулями, но очень радостно
Файл Docker-Compose
Если вы хотите освободить все модули в определенной точкевремени вы можете использовать модуль Release Train, где docker-compose.yml находится рядом с Jenkinsfile.Затем, когда вы захотите отправить свое приложение, вы можете запустить это задание Jenkins.
Если вы хотите отправить каждый сервис сразу после его запуска, независимо от других, вам потребуется доступ к docker-compose..yml из каждого модуля.Вы можете сделать это вручную (так как файлы не будут меняться слишком часто) или создать модуль docker, который вы используете в качестве git-подмодуля во всех ваших службах.
Мы используем общий docker-compose.yml дляэто где каждая версия заменяется переменной:
example-service:
image: example.service:${EXAMPLE_SERVICE_VERSION}
Затем, чтобы запустить этот конкретный сервис в jenkins, мы используем команду
export EXAMPLE_SERVICE_VERSION=1.1.1
docker-compose -p example-project -f docker-compose.yml up -d example-service