Gitlab

Déploiement en app-review

Le déploiement en “app-review” est intégré aux environnements Gitlab et convient aux applications conteneurisées. Il permet de déployer les conteneurs 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).

Le workflow devops de Bearstech implémente cette technique au moyen du reverse-proxy en déployant les conteneurs dans un environnement spécifique.

La génération des certificats SSL est assurée par le reverse-proxy via Let’s Encrypt. Si vous avez besoin d’une gestion de certificats automatisée pour les sous-domaines créés par l’app-review, contactez-nous.

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}.factory-staging.bearstech.com
    only:
        - branches
    except:
        - master
    script:
        # use the factory-deploy script to deploy the compose project
        - factory-deploy

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}.factory-staging.bearstech.com
    rules:
        - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
          when: never      
        - if: >
            $CI_COMMIT_MESSAGE =~ /app-review/ && $CI_COMMIT_BRANCH
          when: on_success
    script:
        # use the factory-deploy script to deploy the compose project
        - factory-deploy
Top