Skip to content

Pipelines CI/CD

Toute la partie CI (Intégration Continue) et CD (Déploiement Continu) des projets Berth est exécutée grâce à Forgejo Actions, qui est un fork des GitHub Actions. Cela nous permet d’utiliser une syntaxe familière tout en gardant le contrôle sur notre infrastructure.

Pendant la phase de développement, le déploiement est également assuré via Forgejo CI en utilisant des commandes docker run et docker-compose.

Ce pipeline est déclenché lors d’une pull_request sur les branches develop et main, ainsi que lors d’un push sur la branche main.

Pour tous les projets, nous utilisons un pipeline nommé 00-quality. Ce pipeline a pour but de garantir la stabilité et la qualité du code :

  1. Exécution des tests : Lancement de la suite de tests automatisés du projet.
  2. Scan SonarQube : Si les tests réussissent, un scan SonarQube est effectué pour analyser la qualité du code, détecter les bugs potentiels et les vulnérabilités de sécurité.

Pour les projets utilisant le workflow GitHub Flow (comme la documentation ou le dépôt DevOps), il existe un pipeline unique pour le build et le déploiement.

Ce pipeline est déclenché lors d’un push sur la branche main.

Ce pipeline suit les étapes suivantes :

  1. Récupération de la version : Récupère le tag de version actuel via Git.
  2. Génération du tag suivant : Calcule le prochain numéro de version en fonction du titre du dernier commit (ex: feat:, fix:, BREAKING CHANGE:).
  3. Build Docker : Construit l’image Docker.
  4. Push Docker : Pousse l’image sur le registre avec trois tags :
    • latest
    • Le tag de version (ex: 1.2.3)
    • Le SHA du commit Git
  5. Tag Git : Crée automatiquement le tag Git correspondant sur Forgejo.
  6. Déploiement : Déploie le projet via une commande docker run.

Pour les projets utilisant le workflow GitFlow (Agent, Server, Front), le pipeline 00-quality reste identique. Cependant, la partie build et déploiement est séparée en deux pipelines distincts selon l’environnement cible.

Ce pipeline est déclenché lors d’un push sur la branche main.

Ce pipeline est utilisé pour les mises en production et fonctionne de manière similaire au pipeline GitHub Flow :

  1. Récupération de la version : Récupère le tag de version actuel via Git.
  2. Génération du tag suivant : Calcule le prochain numéro de version en fonction du titre du dernier commit (ex: feat:, fix:, BREAKING CHANGE:).
  3. Build Docker : Construit l’image Docker.
  4. Push Docker : Pousse l’image sur le registre avec trois tags :
    • stable
    • Le tag de version (ex: 1.2.3)
    • Le SHA du commit Git
  5. Tag Git : Crée automatiquement le tag Git correspondant sur Forgejo.
  6. Déploiement : Déploie le projet via une commande docker run.

Ce pipeline est déclenché lors d’un push sur la branche develop.

Ce pipeline est utilisé pour les déploiements continus en environnement de développement (branche develop) :

  1. Build Docker : Construit l’image Docker.
  2. Push Docker : Pousse l’image sur le registre avec trois tags :
    • latest
    • Le SHA du commit Git
  3. Déploiement : Déploie le projet via une commande docker run.
  • Pas de récupération de tag Git : On ne gère pas de versionnement formel ici.