Gitlab

Déploiement en app-review

Le déploiement en “app-review” est intégré aux environnements Gitlab. Il permet de déployer les applications sur une url dédiée à la branche sur laquelle a lieu le commit.

Cela permet de publier l’application sur une url temporaire, à côté des url “officielles” déployées sur les environnements (staging et production).

Pour cela, vous aurez besoin d’un certificat wildcard et d’une zone wildcard pour votre nom de domaine.

Le workflow devops de Bearstech implémente cette technique au moyen du service de déploiement qui crée un environnement spécifique pour chaque mode de déploiement.

Dans le fichier .gitlab-ci.yml, il convient de déclarer le cas qui autorise un déploiement en “app-review”:

review:
    stage: staging
    environment:
        name: review/${CI_COMMIT_BRANCH}
        url: https://${CI_COMMIT_REF_SLUG}.preprod.bearstech.dev
    only:
        - branches
    except:
        - master
    script:
        - deploy ${CI_COMMIT_REF_SLUG}.preprod.bearstech.dev

Dans notre exemple, la tâche “review” s’effectue à l’étape “staging” (notre application sera déployée sur le serveur de préproduction). On demande à la CI d’exécuter cette tâche lorsqu’un commit a lieu sur une branche, exceptée la branche de production (master): on va utiliser le nom de la branche CI_COMMIT_REF_SLUG pour générer une url temporaire qui sera transmise à Traefik et router les requêtes vers les conteneurs ainsi déployés.

⚠️ Attention, une fois cette règle activée dans le .gitlab-ci.yml, elle sera appliquée pour toutes les branches du projet. Si on veut limiter ce genre de déploiement afin de ne pas multiplier les conteneurs, on peut ajouter une règle plus restrictive, qui vérifie que dans le commentaire de son commit, le développeur demande bien une “app-review”:

review:
    stage: staging
    environment:
        name: review/${CI_COMMIT_BRANCH}
        url: https://${CI_COMMIT_REF_SLUG}.preprod.bearstech.dev
    rules:
        - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
          when: never      
        - if: >
            $CI_COMMIT_MESSAGE =~ /app-review/ && $CI_COMMIT_BRANCH
          when: on_success
    script:
        - deploy ${CI_COMMIT_REF_SLUG}.preprod.bearstech.dev
Top