У меня есть проект, он состоит из frontend, backend, webhook, hasura, db
frontend, backend, webhook - в разных репозиториях
Я хочу подключить CI\CD gitlab
Вопрос стоит в том, где лучше билдить db, hasura, nginx
Можно их засунуть в docker-compose и в репозитории backend их билдить, а можно создать отдельный репозиторий с docker-compose где будут билдиться nginx, hasura, db
А что Вы билдите у nginx? db? hasura? В 90% случаев это ни кому не надо. И достаточно использовать офф образы, подставляя во время запуска файлы конфигов через volume.
Имхо, вариант лучше всего - делить по апликухам. Одно приложение - один репозиторий. Внутри можно поделить на frontend, backend и docker папочки без проблем и любая нормальная ИДЕшка отлично даст указать модули по папкам.
Реальной нужды в разных репозиториях не вижу. А даже если бы вдруг и была - есть гит модули, в конечном итоге все равно структура будет как описал выше.
ex Software Engineer at Reddit TS/React/GraphQL/Go
Мне видится такая практика:
- infra-repo: инициализационные скрипты, docker-compose, настройки для nginx, elk и так далее
- repo per project: каждый проект имеет свой репо (бэкэнд, фронтенд, микросервис), в них уже лежат Dockerfile, .ci.yml настройка pipeline для данного проекта, описание шагов и так далее