Проблема возникает, когда вы хотите использовать переменные в разных ситуациях. Отличным примером было бы, если вы хотите включить 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»