Skip to content

Latest commit

 

History

History
201 lines (181 loc) · 5.6 KB

16.Environnement.md

File metadata and controls

201 lines (181 loc) · 5.6 KB

Les Environnements GitLab CI/CD


Dans gitlab, il existe deux types d'environnements :

  • Les environnements statiques
  • Les environnements dynamiques

Les Environnements Statiques

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

Environnements Dynamiques

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

Exercice 1

  • 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é.

Réponse

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

Exercice 2

  1. 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é.
  1. 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é.
  1. 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é.

Réponse

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 
    

Réponse entière

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