Quand un Pipeline Devrait-il S'arrêter et Attendre un Humain ?

Imaginez ceci : votre équipe dispose d'un pipeline CI/CD solide. Les tests s'exécutent automatiquement. Les scans de sécurité passent. Le code est compilé et déployé en staging sans que personne ne lève le petit doigt. Puis, juste avant la production, le pipeline se met en pause. Une notification apparaît : « Approbation requise. »

Quelqu'un doit cliquer sur « Approuver » avant que le déploiement ne continue. Peut-être que cette personne est votre lead technique. Peut-être un engineering manager. Peut-être qu'ils sont en réunion, ou déjà déconnectés pour la journée. Le déploiement reste là, à attendre.

Ce moment révèle une tension que chaque équipe rencontre. Jusqu'où le pipeline doit-il décider par lui-même ? Et quand doit-il s'arrêter et demander un jugement humain ?

Les Deux Types de Vérifications

Chaque pipeline a des points de contrôle. Avant qu'un changement ne passe d'une étape à la suivante, quelque chose vérifie qu'il est sûr de continuer. Ce point de contrôle peut être de deux types : une porte automatisée ou une approbation manuelle.

Une porte automatisée est une vérification qui s'exécute dans le pipeline sans aucune intervention humaine. Le pipeline exécute une série de tests ou de validations, puis décide si le changement peut avancer. Par exemple, après qu'un développeur a poussé du nouveau code, le pipeline exécute les tests unitaires. Si tous les tests passent, le changement continue. Si un test échoue, le pipeline s'arrête et notifie l'équipe.

Une approbation manuelle est une décision prise par une personne. Généralement, il s'agit d'un ingénieur principal, d'un lead technique ou de quelqu'un responsable d'un environnement spécifique. Ils examinent le changement, considèrent le contexte, et soit l'approuvent, soit le rejettent. Le pipeline attend que cette décision arrive.

Les deux servent le même objectif : empêcher les mauvais changements d'avancer. Mais ils fonctionnent de manière fondamentalement différente.

Le diagramme ci-dessous montre comment ces deux types de vérifications s'intègrent dans un pipeline de déploiement :

flowchart TD A[Changement entre dans le pipeline] --> B{Porte automatisée ?} B -->|Oui| C[Exécuter les vérifications automatisées] C --> D{Succès ?} D -->|Oui| E[Continuer vers l'étape suivante] D -->|Non| F[Arrêter & notifier l'équipe] B -->|Non| G{Approbation manuelle ?} G -->|Oui| H[Attendre la décision humaine] H --> I{Approuvé ?} I -->|Oui| E I -->|Non| F E --> J[Étape suivante du pipeline]

Ce que les Portes Automatisées Font Bien

L'argument le plus fort en faveur des portes automatisées est la cohérence. Chaque fois qu'un changement entre dans le pipeline, les mêmes vérifications s'exécutent de la même manière. Rien n'est sauté parce que quelqu'un a oublié. Rien n'est bâclé parce qu'une échéance approche. Le pipeline ne se fatigue pas, ne se laisse pas distraire et n'a pas de favoris.

Si vos tests sont complets et vos vérifications correctes, les portes automatisées vous donnent une base fiable. Chaque changement qui passe ces portes répond à un standard minimum. Vous n'avez pas à vous demander si quelqu'un a pris des raccourcis ou a sauté une étape.

Les portes automatisées passent également à l'échelle. Une équipe de cinq développeurs peut peut-être examiner manuellement chaque changement. Une équipe de cinquante ne le peut pas. Le pipeline peut exécuter des centaines de vérifications en quelques minutes, alors qu'un relecteur humain mettrait des heures pour faire le même travail.

Là où les Portes Automatisées Montrent leurs Limites

Mais les portes automatisées ont un angle mort. Elles ne peuvent vérifier que ce que vous avez programmé pour qu'elles vérifient. Elles ne peuvent pas lire l'ambiance. Elles ne peuvent pas sentir l'humeur de l'équipe ou l'état de la production. Elles ne peuvent pas prendre une décision basée sur l'expérience.

Un pipeline peut vérifier que tous les tests unitaires passent. Il ne peut pas vous dire si ce changement particulier est sûr à déployer pendant le trafic du Black Friday. Il peut vérifier que votre script de migration de base de données s'exécute sans erreurs de syntaxe. Il ne peut pas vous dire si exécuter cette migration à 15h un mardi est une mauvaise idée.

Les portes automatisées sont excellentes pour répondre à « cela répond-il aux critères techniques ? ». Elles sont terribles pour répondre à « devrions-nous faire cela maintenant ? ».

Quand Vous Avez Besoin d'un Humain

C'est là que les approbations manuelles gagnent leur place. Les humains peuvent prendre en compte des facteurs qu'aucun test ne peut capturer :

  • Est-ce le bon moment pour déployer ? Peut-être que la production est déjà instable. Peut-être qu'une campagne marketing majeure vient d'être lancée. Peut-être que l'ingénieur d'astreinte gère un incident et ne devrait pas être distrait par un déploiement.

  • Ce changement nécessite-t-il une coordination ? Peut-être que le déploiement affecte le service d'une autre équipe. Peut-être que l'équipe base de données doit être informée d'un changement de schéma. Peut-être que l'équipe QA veut exécuter un dernier test de fumée avant que le changement n'atteigne les utilisateurs.

  • Le risque est-il acceptable ? Un petit correctif de bug peut être sûr à déployer un vendredi après-midi. Une refonte majeure, peut-être pas. Un humain peut peser le risque en fonction de l'expérience et du contexte.

Les approbations manuelles créent également de la responsabilité. Quand quelqu'un approuve un déploiement, il engage son nom. Il ne s'agit pas de blâme. Il s'agit d'avoir une trace claire que quelqu'un a examiné le changement et a pris une décision consciente. Si quelque chose tourne mal, l'équipe peut revenir en arrière et comprendre ce qui a été considéré avant le déploiement.

Comment Choisir Entre les Deux

La question courante est : quelles vérifications doivent être automatisées, et lesquelles doivent nécessiter un humain ?

La réponse dépend de la nature de la vérification. Les validations techniques qui peuvent être codifiées devraient être des portes automatisées. Tests, scans de sécurité, linting, vérifications de format, audits de dépendances — ce sont toutes des choses qu'une machine peut faire plus rapidement et plus systématiquement qu'un humain.

Les décisions qui nécessitent du jugement, du contexte ou de la coordination devraient être des approbations manuelles. Les décisions de timing, les évaluations de risque, la coordination inter-équipes et les évaluations d'impact métier sont mieux laissées aux personnes.

Mais il y a une nuance ici. Ce n'est pas parce que quelque chose peut être automatisé que cela doit être une porte. Certaines vérifications sont utiles comme information mais pas comme bloqueur. Par exemple, vous pouvez exécuter un test de performance et journaliser les résultats, mais ne pas bloquer le pipeline si les résultats sont légèrement moins bons que prévu. C'est une décision qui revient à un humain.

Ils Travaillent Ensemble, Pas l'Un Contre l'Autre

Les portes automatisées et les approbations manuelles ne sont pas des approches concurrentes. Elles se complètent. Le pipeline gère les vérifications répétitives, cohérentes et techniques. Les humains gèrent les décisions contextuelles, situationnelles et basées sur le jugement.

Un bon pipeline utilise des portes automatisées pour filtrer les problèmes évidents tôt. Au moment où un changement atteint une étape d'approbation manuelle, il a déjà passé une série de contrôles de qualité. Le relecteur humain n'a pas besoin de se soucier de savoir si le code compile ou si les tests passent. Il peut se concentrer sur les questions plus difficiles : est-ce la bonne chose à faire, à ce moment, dans ce contexte ?

Une Liste de Vérification Pratique

Lors de la conception des points de contrôle de votre pipeline, posez-vous ces questions :

  • Cette vérification peut-elle être entièrement définie dans le code ? Si oui, automatisez-la.
  • Cette vérification nécessite-t-elle une connaissance de l'état actuel de la production ? Si oui, gardez-la manuelle.
  • Cette vérification doit-elle prendre en compte le timing métier ou la coordination d'équipe ? Si oui, gardez-la manuelle.
  • Cette vérification est-elle purement technique et répétitive ? Si oui, automatisez-la.
  • Automatiser cette vérification supprimerait-il une supervision humaine précieuse ? Si oui, gardez-la manuelle.

L'Essentiel à Retenir

Les portes automatisées vous donnent de la vitesse et de la cohérence. Les approbations manuelles vous donnent du contexte et du jugement. Aucune ne remplace l'autre. Construisez votre pipeline pour utiliser les deux, et vous obtiendrez un système qui va vite mais qui n'élude pas les questions difficiles.