5 min lecture • Guide 326 of 877
Automatisation de la Gestion des Branches
La gestion manuelle des branches est sujette aux erreurs et chronophage. Les workflows de branches automatisés assurent un nommage cohérent, nettoient les branches obsolètes et appliquent les standards de l'équipe. Ce guide couvre les stratégies pratiques d'automatisation pour la gestion des branches.
Types d'Automatisation de Branches
| Automatisation | Bénéfice | Effort |
|---|---|---|
| Validation du nommage | Cohérence | Faible |
| Suppression auto merged | Repo propre | Faible |
| Nettoyage obsolètes | Moins de désordre | Moyen |
| Règles de protection | Portes de qualité | Faible |
| CI par type de branche | Bons tests | Moyen |
Nommage des Branches
Application des Conventions
AUTOMATISATION DU NOMMAGE DES BRANCHES
══════════════════════════════════════
PATTERN DE NOMMAGE :
─────────────────────────────────────
Format standard :
├── type/ticket-description
├── Exemples :
│ ├── feature/AUTH-123-flux-connexion
│ ├── bugfix/BUG-456-null-pointer
│ ├── hotfix/PROD-789-fix-paiement
│ └── chore/DEP-001-update-deps
└── Cohérent, analysable
OPTIONS DE VALIDATION :
─────────────────────────────────────
1. Hook pre-commit :
#!/bin/bash
branch=$(git rev-parse --abbrev-ref HEAD)
pattern="^(feature|bugfix|hotfix|chore)\/[A-Z]+-[0-9]+-"
if [[ ! $branch =~ $pattern ]]; then
echo "Nom de branche invalide : $branch"
exit 1
fi
2. Check CI :
- name: Valider nom de branche
run: |
if [[ ! "$GITHUB_HEAD_REF" =~ ^(feature|bugfix|hotfix)/ ]]; then
echo "Nom de branche invalide"
exit 1
fi
3. Hook pre-receive (côté serveur) :
├── Bloque les branches invalides au push
└── Application la plus forte
LIEN VERS LES TÂCHES :
─────────────────────────────────────
Extraire le ticket de la branche :
├── Parser le nom de branche
├── Lier la PR à l'issue automatiquement
├── Mettre à jour le statut de la tâche
├── Fermer la tâche au merge
└── Traçabilité complète
Nettoyage Automatique
Gestion du Cycle de Vie des Branches
AUTOMATISATION DU NETTOYAGE DE BRANCHES
═══════════════════════════════════════
SUPPRESSION AUTO AU MERGE :
─────────────────────────────────────
Paramètre GitHub :
├── Settings → General
├── "Automatically delete head branches"
├── Activer ✓
├── Branche supprimée quand PR mergée
├── Pas de nettoyage manuel
└── Repository propre
GitLab :
├── Settings → Repository
├── "Enable auto-delete merged branches"
└── Même comportement
NETTOYAGE BRANCHES OBSOLÈTES :
─────────────────────────────────────
Script pour trouver les branches obsolètes :
# Trouver les branches de plus de 30 jours
for branch in $(git branch -r --merged | grep -v main); do
last_commit=$(git log -1 --format=%ci "$branch")
days_old=$(( ($(date +%s) - $(date -d "$last_commit" +%s)) / 86400 ))
if [ $days_old -gt 30 ]; then
echo "Obsolète : $branch ($days_old jours)"
fi
done
NETTOYAGE PLANIFIÉ :
─────────────────────────────────────
GitHub Action :
name: Nettoyage Branches
on:
schedule:
- cron: '0 0 * * 0' # Hebdomadaire
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Supprimer branches obsolètes
run: |
# Script de nettoyage
Protection des Branches
Règles de Protection
CONFIGURATION PROTECTION DE BRANCHE
═══════════════════════════════════
BRANCHE MAIN/MASTER :
├── ✅ Require pull request before merging
│ └── Au moins 1 approbation
├── ✅ Require status checks to pass
│ ├── CI build
│ ├── Tests
│ └── Linting
├── ✅ Require conversation resolution
├── ✅ Require linear history (optionnel)
├── ✅ Include administrators
└── ❌ Allow force pushes
BRANCHES RELEASE :
├── ✅ Mêmes règles que main
├── ✅ Require signed commits (optionnel)
└── ✅ Restrict who can push
Intégration avec GitScrum
Lier Branches et Tâches
WORKFLOW BRANCHE-TÂCHE
══════════════════════
1. CRÉATION DE TÂCHE
GitScrum génère un ID : PROJ-123
2. CRÉATION DE BRANCHE
Développeur : feature/PROJ-123-login-page
3. LIAISON AUTOMATIQUE
Webhook détecte PROJ-123 dans le nom
→ Tâche mise à jour "En cours"
→ Branche liée à la tâche
4. PULL REQUEST
Titre : [PROJ-123] Add login page
→ Lien automatique PR ↔ Tâche
→ Tâche "En revue"
5. MERGE
PR mergée
→ Branche supprimée
→ Tâche "Terminée"
→ Traçabilité complète
Bonnes Pratiques
Conseils d'Automatisation
| Pratique | Bénéfice |
|---|---|
| Nommage strict | Automatisation fiable |
| Suppression auto | Repo propre |
| Protection main | Qualité garantie |
| CI par type | Tests appropriés |
| Notifications obsolètes | Pas de surprises |
Erreurs à Éviter
ANTI-PATTERNS
═════════════
❌ Pas de convention de nommage
└── Impossible d'automatiser
❌ Branches qui vivent trop longtemps
└── Conflits de merge, dette technique
❌ Pas de protection sur main
└── Commits directs, qualité variable
❌ Force push autorisé
└── Historique cassé
❌ Nettoyage manuel uniquement
└── Accumulation de branches mortes