Sobes.tech
Назад к вопросам
Middle
6

GitLab CI/CD: три репозитория (Front, Back, DB). Разработчик создал ветку во фронте — нужно автоматически поднять фича-стенд со всеми тремя сервисами, после мержа стенд удаляется. Как реализовать в GitLab CI?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

Для реализации автоматического поднятия фича-стенда с тремя сервисами (Front, Back, DB) в GitLab CI можно использовать следующий подход:

  1. Монорепозиторий или мульти-проектная интеграция:

    • В каждом репозитории (Front, Back, DB) настроить .gitlab-ci.yml с возможностью триггера пайплайнов в других репозиториях.
  2. Создание динамического окружения:

    • При создании ветки во фронте запускается пайплайн, который:
      • Клонирует или запускает сборку всех трёх сервисов (например, через Docker Compose или Kubernetes).
      • Создаёт уникальное окружение (например, feature/branch-name).
      • Разворачивает все сервисы с конфигурацией для этого окружения.
  3. Удаление окружения после мержа:

    • Настроить в GitLab правило, которое при слиянии ветки в основную (например, master/main) запускает пайплайн с задачей удаления соответствующего feature-окружения.
  4. Пример упрощённого .gitlab-ci.yml для Front:

stages:
  - deploy
  - cleanup

deploy_feature:
  stage: deploy
  script:
    - echo "Deploying feature environment for $CI_COMMIT_REF_NAME"
    - docker-compose -f docker-compose.feature.yml up -d
  environment:
    name: feature/$CI_COMMIT_REF_NAME
    url: http://feature-$CI_COMMIT_REF_NAME.example.com
  only:
    - branches
  except:
    - main

cleanup_feature:
  stage: cleanup
  script:
    - echo "Cleaning up feature environment for $CI_COMMIT_REF_NAME"
    - docker-compose -f docker-compose.feature.yml down
  environment:
    name: feature/$CI_COMMIT_REF_NAME
    action: stop
  only:
    - main
  when: manual
  1. Кросс-репозиторный триггер:
    • Можно использовать GitLab Triggers или Multi-project pipelines, чтобы при деплое фронта запускать сборку и деплой бэка и базы.

Таким образом, при создании ветки во фронте автоматически поднимается полный стек, а после мержа — удаляется.