Branches
& workflow
Des branches longues protégées, des branches de travail courtes, et un seul chemin pour aller jusqu’à la production : la merge request.
Chaque modification part d’une branche courte, est relue dans une merge request, puis progresse d’environnement en environnement par fusion, jamais par copie de fichiers.
Deux types de dépôts
| Dépôt applicatif | Dépôt GitOps | |
|---|---|---|
| Exemples | cma-backend, cma-front, sgs-vitrine | agitex-bf-apps |
| Contenu | Code source, tests, .gitlab-ci.yml | Charts Helm, manifests Kustomize, application.yaml ArgoCD |
| Rôle | CI : build, tests, publication de l’image | CD : décrit l’état désiré, ArgoCD l’applique |
| Branches longues | develop, recette, main | main, recette, preprod, prod |
Dépôt applicatif
Branches longues
| Branche | Rôle | Protection |
|---|---|---|
develop | Intégration continue du travail de l’équipe | Protégée, fusion par MR |
recette | Version en validation fonctionnelle | Protégée, fusion par MR depuis develop |
main | Version livrable. Chaque push déclenche la CI, qui publie l’image et met à jour le dépôt GitOps | Protégée, fusion par MR depuis recette |
feature/CMA-142-export ──┐
fix/CMA-150-arrondi ─────┼──► develop ──MR──► recette ──MR──► main ──► CI : image + tag GitOps
chore/maj-spring-boot ───┘
Branches courtes
| Préfixe | Usage | Part de | Revient dans |
|---|---|---|---|
feature/ | Nouvelle fonctionnalité | develop | develop |
fix/ | Correction d’un défaut en cours de développement | develop | develop |
hotfix/ | Correction urgente d’un défaut en production | tag de production ou main | main, puis reportée dans recette et develop |
chore/ | Maintenance : dépendances, outillage, CI | develop | develop |
docs/ | Documentation seule | develop | develop |
Nommer une branche
Format : <type>/<ticket>-<description-courte>, en minuscules et en kebab-case, sans accents ni espaces.
feature/CMA-142-export-ordonnances
fix/SGS-88-calcul-moyenne-trimestre
hotfix/CMA-231-calcul-tva
chore/maj-angular-20
Le numéro de ticket relie la branche, ses commits et sa merge request au besoin d’origine.
Règles des branches de travail
-
Partir du dernier état de
develop: plus une branche démarre tard, moins elle produit de conflits.git fetch origingit switch -c feature/CMA-142-export-ordonnances origin/develop -
Un seul sujet par branche. Un correctif découvert en chemin mérite sa propre branche.
-
Courte durée de vie : quelques jours. Au-delà, découpez le sujet ou intégrez-le par étapes.
-
Se mettre à jour régulièrement, au moins une fois par jour, avec
git rebase origin/develop(voir Éviter les conflits). -
Supprimer la branche après la fusion : cochez « Supprimer la branche source » dans la merge request, puis nettoyez en local.
git switch develop && git pullgit branch -d feature/CMA-142-export-ordonnances
Dépôt GitOps
Le dépôt GitOps suit un modèle différent : une branche par environnement, et ArgoCD déploie automatiquement ce qui est poussé sur chacune.
| Branche | Rôle |
|---|---|
main | Intégration : nouvelles applications, charts, application.yaml. Aucune Application ArgoCD ne la suit |
recette | État désiré de l’environnement de recette |
preprod | État désiré de la préproduction |
prod | État désiré de la production |
Les règles à retenir :
-
Déployer = committer sur la branche de l’environnement. Personne ne fait de
kubectl applyou dehelm upgradeà la main :selfHealannulerait la modification. -
Promouvoir = fusionner la branche source dans la branche cible, de préférence par merge request :
git switch preprodgit merge recettegit push -
Revenir en arrière =
git revertdu commit fautif sur la branche de l’environnement, puis push. -
Les commits de la CI (
cma backend recette -> 1a2b3c4 [ci skip]) mettent à jour les tags d’image. On ne les modifie pas à la main et on ne réécrit jamais l’historique de ces branches. -
Aucun secret dans ce dépôt : ils sont provisionnés directement dans le cluster.
Protéger les branches dans GitLab
Dans Paramètres › Dépôt › Branches protégées :
| Branche | Autorisé à pousser | Autorisé à fusionner | Force push |
|---|---|---|---|
develop, recette, main (applicatif) | Personne | Mainteneurs | Interdit |
preprod, prod (GitOps) | Compte de service CI uniquement | Mainteneurs, avec approbation | Interdit |
recette (GitOps) | Mainteneurs et compte de service CI | Mainteneurs | Interdit |
Dans Paramètres › Merge requests, activez aussi :
- Les pipelines doivent réussir ;
- Tous les fils de discussion doivent être résolus ;
- Supprimer la branche source coché par défaut ;
- la méthode de fusion Merge commit with semi-linear history.
:::warning Pouvoir fusionner sur prod, c’est pouvoir déployer en production
Limitez le rôle Maintainer du dépôt GitOps aux personnes habilitées à livrer en production.
:::