CaenHackYouAcademy
CI/CD

Anatomie d'un pipeline

Ce qu'un pipeline doit garantir, et dans quel ordre.

Un pipeline n'est pas un script de déploiement. C'est une suite de contrôles dont le rôle est de dire, le plus tôt possible, qu'un commit ne mérite pas d'aller plus loin.

jobs:
  verifier:
    steps:
      - run: npm ci
      - run: npm run lint          #  ~10 s
      - run: npm run types:check   #  ~30 s
      - run: npm test              # ~3 min
      - run: npm run build         # ~5 min

L'ordre n'est pas décoratif : le contrôle qui échoue le plus souvent et coûte le moins cher passe en premier. Un pipeline qui compile pendant cinq minutes avant de buter sur une virgule manquante gaspille cinq minutes à chaque erreur.

Les trois « continu »

TermeCe qui est automatiséOù s'arrête l'automatisation
Intégration continuebuild et tests à chaque commitrien n'est déployé
Livraison continue+ un artefact déployable, prêtun humain déclenche la mise en production
Déploiement continu+ la mise en production elle-mêmeplus aucune main humaine

Les trois se disent « CD » dans la conversation courante, ce qui entretient une confusion durable. La différence tient à un seul point : reste-t-il un bouton à presser ?

Un pipeline vert n'est une information que si le rouge coûte quelque chose. Dès qu'une équipe prend l'habitude de relancer un job « parce qu'il est instable », le pipeline ne prouve plus rien. Un test intermittent se répare ou se supprime — il ne se relance pas.

Les pièges classiques

Les secrets ne se mettent pas dans le fichier de pipeline, qui est versionné et souvent lisible par toute l'organisation. Ils viennent du magasin de secrets du forge, injectés à l'exécution — et ne sont jamais affichés dans les logs.

Un pipeline déclenché sur une pull request d'un dépôt public peut exécuter du code proposé par un inconnu. Lui donner accès aux secrets de production revient à offrir ces secrets. C'est pour cela que les déclencheurs distinguent les événements issus de forks.

VérificationQuestion 1 / 3

Réponse unique

Dans quel ordre placer `npm test` (3 min), `npm run lint` (10 s) et `npm run build` (5 min) ?

Indice · Qu'est-ce qui coûte le moins cher à faire échouer ?

On this page