Déploiement
Déploiement • Chapitre 10 : Déploiement avec Git et GitHub

Retour à une version précédente

Le Rollback est le filet de sécurité ultime de tout ingénieur DevOps. Sachez réagir avec calme et méthode face à une régression critique : rollback instantané en 1 clic sur PaaS et utilisation rigoureuse de git revert.

🚨
Incident P0

Régression bloquante découverte en production (ex: échec des paiements).

⏪
Instant Rollback PaaS

Rétablissement de l'ancien bundle en 5 secondes sans refaire de build.

↩️
git revert Propre

Crée un nouveau commit annulant le commit défaillant sans réécrire l'historique.

⚠️
Danger de git reset

git reset --hard est formellement banni en production car il détruit la traçabilité.

git-revert-emergency.sh
# 1. Identifier le hash du commit coupable dans les logs récents
$ git log --oneline -n 5
a1b2c3d (HEAD -> main, origin/main) feat: update checkout payment logic # 🚨 C'est lui qui crashe !
e4f5a6b fix: update navbar logo
7f3a9bc feat: initial commit ready for production

# 2. Annuler proprement le commit fautif avec git revert
$ git revert a1b2c3d --no-edit
[main 9c8b7a6] Revert "feat: update checkout payment logic"
 3 files changed, 14 insertions(+), 68 deletions(-)

# 3. Pousser l'annulation immédiatement vers GitHub
$ git push origin main
To github.com:organisation/learnweb-app.git
   a1b2c3d..9c8b7a6  main -> main
# ⚡ La CI/CD déploie l'annulation : la production redevient stable en moins d'une minute !

Guide Approfondi & Architecture Système

1. Rollback Instantané via l'Interface Hébergeur (Le réflexe à 5 secondes)

Lorsque le site plante en pleine journée avec 10 000 visiteurs en ligne :
  1. Ne perdez pas de temps à ouvrir votre terminal pour coder un correctif sous pression.
  2. Rendez-vous dans la console de votre hébergeur (Vercel / Netlify / Render) dans l'onglet Deployments.
  3. Repérez le déploiement qui tournait avant l'incident, cliquez sur ... (Menu) puis sur « Instant Rollback » (ou « Promote to Production »).
  4. Le CDN mondial réactive l'ancien bundle instantanément. L'incident est clos. Vous pouvez ensuite analyser le problème à tête reposée.

2. Pourquoi git revert et jamais git reset --hard ?

La différence est capitale en équipe :
  • git reset --hard : Efface les commits du passé comme s'ils n'avaient jamais existé. Si vos collègues ont déjà fait un git pull, vous corrompez leur historique et provoquez des conflits insolubles.
  • git revert : Crée un nouveau commit officiel déclarant « J'annule les effets du commit X ». L'historique reste limpide, les auditeurs de sécurité comprennent ce qui s'est passé et aucun collègue n'est bloqué.

Tableau Comparatif : Stratégies de Reprise après Incident

StratégieDélai de RésolutionNiveau de RisqueQuand l'Utiliser ?
Instant Rollback (Console PaaS)5 à 15 secondesNul (ancien bundle déjà validé)Urgence absolue pour rétablir le service aux utilisateurs
git revert + push1 à 2 minutesTrès faibleRollback standard traçable dans Git et sur serveurs VPS
Hotfix en urgence (nouveau commit)15 à 60 minutesÉlevé (risque d'introduire un second bug)Uniquement si le bug est trivial (faute de frappe, variable .env)
git reset --hard (Dépôt partagé)DangereuxCritique (destruction d'historique)INTERDIT en production partagée