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

# #deployment #gitlab #continuous-integration #gitlab-ci #pipeline

Вопрос:

Я пытаюсь перенести конвейер BitBucket в GitLab. В BitBucket мы используем другой набор переменных среды для каждого развертывания (промежуточного/производственного и т.д.).

Я не знаю, как указать это в GitLab.

Я настроил только групповые переменные и переменные, относящиеся к репозиторию, но я не нашел, как переопределить, например, имя БД для разных развертываний.

Заранее благодарю вас за вашу помощь.

Ответ №1:

Вы можете определить переменные и ограничить их область действия

По умолчанию все переменные CI/CD доступны для любого задания в конвейере. Поэтому, если проект использует скомпрометированный инструмент в тестовом задании, он может предоставить доступ ко всем переменным CI/CD, которые использовались в задании развертывания. Это распространенный сценарий атак на цепочки поставок.

GitLab помогает смягчать атаки на цепочки поставок, ограничивая область действия переменной среды.
GitLab делает это, определяя, для каких сред и соответствующих заданий может быть доступна переменная.

Смотри «Определение областей применения со спецификациями«и «Выражение переменной CI/CD»

 deploy:
  script: cap staging deploy
  environment: staging
  only:
    variables:
      - $RELEASE == "staging"
      - $STAGING