Dans gitlab, il existe deux types d'environnements :
- Les environnements statiques
- Les environnements dynamiques
Les environnements statiques sont des environnements prédéfinis dans GitLab CI/CD. Ils sont généralement constants et représentent des étapes standard du cycle de vie d'une application, comme les environnements de développement, test et production. Ces environnements sont définis une fois et réutilisés tout au long du processus de développement.
deploy_staging:
stage: deploy
script:
- echo "Deploy to staging server"
environment:
name: staging
url: https://staging.example.com
Les environnements dynamiques, en revanche, sont générés à la volée en fonction de certaines conditions ou actions, comme la création d'une nouvelle branche ou d'une merge request. Ils sont extrêmement utiles pour des scénarios tels que le test de nouvelles fonctionnalités, où vous souhaitez créer un environnement de test unique pour chaque branche de fonctionnalité sans affecter l'environnement principal de test.
stages:
- deploy
deploy_review:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement de revue pour $CI_COMMIT_REF_NAME"
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://$CI_COMMIT_REF_NAME.example.com
rules:
- if: $CI_COMMIT_REF_NAME == "main" && $CI_PIPELINE_SOURCE == "merge_request_event"
when: never
- if: $CI_COMMIT_REF_NAME == "develop"
when: never
- when: always
- Utilisez la clause
variables
pour définir la variable DEPLOY_ENV avec la valeur par défaut "review/$CI_COMMIT_SHORT_SHA". - Utilisez la clause workflow avec des règles pour définir les conditions suivantes :
- Si la branche est "main", alors DEPLOY_ENV doit être "production".
- Si la branche est une branche de fonctionnalité (matchant avec "feature-*"), alors DEPLOY_ENV doit être "dev".
- Si la branche est "staging", alors DEPLOY_ENV doit être "staging".
- Si le déclencheur de pipeline est une planification (schedule), le déploiement doit être ignoré.
variables:
DEPLOY_ENV: review/$CI_COMMIT_SHORT_SHA
workflow:
rules:
- if: $CI_COMMIT_REF_NAME == "main"
variables:
DEPLOY_ENV: production
- if: $CI_COMMIT_REF_NAME =~ "/feature-/"
variables:
DEPLOY_ENV: dev
- if: $CI_COMMIT_REF_NAME == "staging"
variables:
DEPLOY_ENV: staging
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
- Définissez un stage de déploiement "deploy_prod" avec les conditions suivantes :
- Si DEPLOY_ENV est "production", le déploiement doit toujours être effectué.
- Sinon, le déploiement doit être ignoré.
- Définissez un stage de déploiement "deploy_dev" avec les conditions suivantes :
- Si DEPLOY_ENV est "dev", le déploiement doit toujours être effectué.
- Sinon, le déploiement doit être ignoré.
- Définissez un stage de déploiement "deploy_staging" avec les conditions suivantes :
- Si DEPLOY_ENV est "staging", le déploiement doit toujours être effectué.
- Sinon, le déploiement doit être ignoré.
stages:
- deploy
deploy_prod:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement ($DEPLOY_ENV) de revue pour $CI_COMMIT_REF_NAME"
environment:
name: $DEPLOY_ENV
url: https://$DEPLOY_ENV.das.becode
rules:
- if: $DEPLOY_ENV == "production"
when: always
- when: never
deploy_dev:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement ($DEPLOY_ENV) de revue pour $CI_COMMIT_REF_NAME"
environment:
name: $DEPLOY_ENV
url: https://$DEPLOY_ENV.das.becode
rules:
- if: $DEPLOY_ENV == "dev"
when: always
- when: never
deploy_staging:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement ($DEPLOY_ENV) de revue pour $CI_COMMIT_REF_NAME"
environment:
name: $DEPLOY_ENV
url: https://$DEPLOY_ENV.das.becode
rules:
- if: $DEPLOY_ENV == "staging"
when: always
- when: never
variables:
DEPLOY_ENV: review/$CI_COMMIT_SHORT_SHA
workflow:
rules:
- if: $CI_COMMIT_REF_NAME == "main"
variables:
DEPLOY_ENV: production
- if: $CI_COMMIT_REF_NAME =~ "/feature-/"
variables:
DEPLOY_ENV: dev
- if: $CI_COMMIT_REF_NAME == "staging"
variables:
DEPLOY_ENV: staging
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
stages:
- deploy
deploy_prod:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement ($DEPLOY_ENV) de revue pour $CI_COMMIT_REF_NAME"
environment:
name: $DEPLOY_ENV
url: https://$DEPLOY_ENV.das.becode
rules:
- if: $DEPLOY_ENV == "production"
when: always
- when: never
deploy_dev:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement ($DEPLOY_ENV) de revue pour $CI_COMMIT_REF_NAME"
environment:
name: $DEPLOY_ENV
url: https://$DEPLOY_ENV.das.becode
rules:
- if: $DEPLOY_ENV == "dev"
when: always
- when: never
deploy_staging:
stage: deploy
tags:
- docker
script: echo "Déploiement de l'environnement ($DEPLOY_ENV) de revue pour $CI_COMMIT_REF_NAME"
environment:
name: $DEPLOY_ENV
url: https://$DEPLOY_ENV.das.becode
rules:
- if: $DEPLOY_ENV == "staging"
when: always
- when: never