Проблема возникает, когда вы хотите использовать переменные в разных ситуациях. Отличным примером было бы, если вы хотите включить URL-адресов вашей продукции, постановки и базы данных разработки в той же задаче, но не хотелось писать отдельные задания для каждой среды.
Когда одна процедура (развертывание S3) требует нескольких рабочих мест для различных сред, у нас есть проблема. В результате управлять несколькими заданиями для одной процедуры требует времени. Поэтому я придумал решение на основе работы рабочего процесса. Используя работу рабочего процесса и условие правила, мы можем интегрировать значения переменной на основе ветви. В результате вместо записи заданий для каждой среды одно задание может обрабатывать несколько учетных данных о среде.
Если у вас есть какие-либо вопросы по этому вопросу, пожалуйста, свяжитесь со мной в santhoshthomas015@gmail.com. .
Приведен образец кода ниже:
image: node:latest
variables:
GIT_DEPTH: '0'
stages:
- build
- deploy
workflow:
rules:
- if: $CI_COMMIT_REF_NAME == "develop"
variables:
DEVELOP: "true"
ENVIRONMENT_NAME: Develop
WEBSITE_URL: DEVELOP_WEBSITE_URL
S3_BUCKET: (develop-s3-bucket-name)
AWS_REGION: ************** develop
AWS_ACCOUNT: ********develop
- if: $CI_COMMIT_REF_NAME == "main"
variables:
PRODUCTION: "true"
ENVIRONMENT_NAME: PRODUCTION
WEBSITE_URL: $PROD_WEBSITE_URL
S3_BUCKET: $PROD-S3-BUCKET-NAME
AWS_REGION: ************** (prod-region)
AWS_ACCOUNT: ***********(prod-acct)
- when: always
build-app:
stage: build
script:
#build-script
environment:
name: $ENVIRONMENT_NAME
deploy-app:
stage: deploy
script:
#deploy-script
environment:
name: $ENVIRONMENT_NAME
NB: Пожалуйста, дайте мне знать, если эта процедура верна. (Эксперты)
Оригинал: «https://dev.to/sats268842/gitlab-ci-cd-for-multiple-environment-54dj»