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