Git · Fiche 06
Gestion des Environnements
Stratégies de branches et de déploiement par environnement : branches dédiées, tags de release ou feature flags.
Stratégies de branches et de déploiement par environnement : comment faire voyager le code du poste du développeur jusqu’à la production.
🏗️ Environnements Types
Development
- Développement actif
- Tests unitaires
- Intégration continue
- Données de test
Staging
- Tests d’intégration
- Validation métier
- Données similaires prod
- Tests de performance
Pre-production
- Tests finaux
- Validation client
- Configuration prod
- Tests de charge
Production
- Utilisateurs finaux
- Données réelles
- Haute disponibilité
- Monitoring complet
🌿 Stratégie : Branches par Environnement
Une branche dédiée par environnement.
main (production) ────●────────●────────●
staging ──────●──●──●──●──●──●──●──●
develop ──●──●──●──●──●──●──●──●──●──●
feature/A ──●──●──●
feature/B ────●──●──●
Flux de promotion
# 1. Développement
git checkout develop
git merge feature/nouvelle-fonctionnalite
# 2. Promotion vers staging
git checkout staging
git merge develop
# 3. Tests en staging réussis
git checkout main
git merge staging
git tag v1.2.0
# 4. Déploiement automatique
# develop → DEV
# staging → STAGING
# main → PRODUCTION
✅ Avantages
- Correspondance claire branche/environnement
- Contrôle précis des déploiements
- Rollback facile par environnement
- Isolation des environnements
❌ Inconvénients
- Maintenance de multiples branches
- Conflits lors des promotions
- Complexité de synchronisation
- Hotfixes compliqués
🏷️ Stratégie : Tags et Déploiement
Une branche principale avec des tags pour les environnements.
main ●──●──●──●──●──●──●──●──●──●
│ │ │ │
│ │ │ └─ v1.3.0 (prod)
│ │ └─ v1.3.0-rc.2 (staging)
│ └─ v1.3.0-rc.1 (staging)
└─ v1.2.1 (prod)
Stratégie de tags
Development
- Branche main directement
- Déploiement automatique
- Chaque commit = déploiement
Staging
- Tags release candidates
- Format :
v1.2.0-rc.1 - Tests d’intégration
Production
- Tags de release
- Format :
v1.2.0 - Déploiement manuel/approuvé
# Création d'un release candidate
git tag v1.3.0-rc.1
git push origin v1.3.0-rc.1
# → Déploiement automatique en staging
# Après validation, release en production
git tag v1.3.0
git push origin v1.3.0
# → Déploiement en production
# Hotfix
git checkout v1.3.0
git checkout -b hotfix/critical-bug
# ... correction ...
git tag v1.3.1
git push origin v1.3.1
🔄 Stratégie : Feature Flags + Environnements
Déploiement continu avec activation conditionnelle.
Configuration par environnement
| Flag | Development | Staging | Production |
|---|---|---|---|
NEW_FEATURE |
✅ true | ✅ true | ❌ false |
BETA_UI |
✅ true | ❌ false | ❌ false |
DEBUG_MODE |
✅ true | ❌ false | ❌ false |
// Code avec feature flags
class FeatureService {
isEnabled(feature, environment) {
const config = {
development: { NEW_FEATURE: true, BETA_UI: true },
staging: { NEW_FEATURE: true, BETA_UI: false },
production: { NEW_FEATURE: false, BETA_UI: false }
};
return config[environment][feature] || false;
}
}
// Utilisation
if (featureService.isEnabled('NEW_FEATURE', process.env.NODE_ENV)) {
return newImplementation();
} else {
return legacyImplementation();
}
Avantages de cette approche
- Déploiement continu sans risque
- Tests en production avec utilisateurs limités
- Rollback instantané (toggle de flag)
- A/B testing facilité
- Réduction des branches de feature
🎯 Recommandations par Contexte
Équipe junior
- Branches par environnement
- Processus de promotion strict
- Validation manuelle
- Documentation détaillée
Équipe expérimentée
- Tags + déploiement continu
- Feature flags
- Automatisation poussée
- Monitoring avancé
Contexte réglementé
- Branches par environnement
- Approbations multiples
- Traçabilité complète
- Tests exhaustifs
Piège d’entretien : avec la stratégie « branches par environnement », un hotfix appliqué directement sur main doit être redescendu (mergé) vers staging et develop, sinon les environnements divergent silencieusement.
Interro écrite
8 questions pour valider la fiche. Une seule réponse par question.
/8