CI/CD Pipeline — Conventions et workflows
Ce guide définit les conventions pour créer des pipelines CI/CD robustes et sécurisés. Utilise iac_guardrails_scan pour valider les fichiers de configuration.
Principes fondamentaux
1. Sécurité d'abord
- Jamais de secrets hardcodés dans les fichiers de pipeline
- Utiliser les secrets natifs de la plateforme (GitHub Secrets, GitLab CI/CD Variables)
- Limiter les permissions au minimum nécessaire
- Scanner les dépendances et le code dans le pipeline (
dependency_guard, secret_scan)
2. Reproductibilité
- Pinner toutes les versions (actions, images Docker, dépendances)
- Utiliser des lockfiles (package-lock.json, poetry.lock)
- Préférer les tags semver aux branches (
actions/checkout@v4, pas @main)
- Utiliser des digests SHA pour les images Docker critiques
3. Performance
- Activer le cache pour les dépendances (node_modules, pip cache, .m2)
- Utiliser le parallélisme (matrix builds, jobs concurrents)
- Séparer les pipelines (lint rapide vs tests complets)
- Utiliser des images Docker slim/alpine
4. Fiabilité
- Définir des timeouts sur chaque job
- Configurer les retries pour les étapes réseau (install, deploy)
- Utiliser des health checks post-déploiement
- Implémenter le rollback automatique
Structure recommandée d'un pipeline
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Lint & │──▶│ Tests │──▶│ Security │──▶│ Build │
│ Format │ │ Unit │ │ Scan │ │ │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
│
▼
┌──────────┐ ┌──────────┐
│ Deploy │◀──│ Tests │
│ Prod │ │ E2E │
└──────────┘ └──────────┘
Étapes standard
- Lint & Format — ESLint, Prettier, Black, Ruff (rapide, fail fast)
- Tests unitaires — Jest, Pytest, avec couverture minimum
- Security scan —
secret_scan, dependency_guard, SAST
- Build — Compilation, bundling, Docker build
- Tests E2E — Playwright, Cypress (sur l'artefact buildé)
- Deploy staging — Déploiement automatique sur staging
- Deploy production — Manuel ou auto avec approval
Bonnes pratiques par plateforme
Pour les détails par plateforme :
Validation avec Collègue
Avant de merger un pipeline, valide-le :
# Appeler iac_guardrails_scan avec le fichier de pipeline
iac_guardrails_scan({
files: [{path: ".github/workflows/ci.yml", content: "..."}],
policy_profile: "strict"
})
Patterns CI/CD courants
Matrix build (multi-version)
Tester sur plusieurs versions de runtime (Node 18/20/22, Python 3.10/3.11/3.12).
Utilise la stratégie matrix de la plateforme.
Cache efficace
- Clé de cache = hash du lockfile (
hashFiles('**/package-lock.json'))
- Restore keys par ordre de spécificité
- Ne pas cacher les artefacts de build (seulement les dépendances)
Deploy progressif
- Canary : déployer sur 5% du trafic, monitorer, puis 100%
- Blue/Green : basculer le load balancer entre 2 environnements
- Rolling : remplacer les instances une par une
Monorepo
- Détecter les changements par dossier (
paths: dans GitHub Actions)
- Ne builder/tester que les packages modifiés
- Utiliser des outils comme Turborepo, Nx, ou Lerna
Anti-patterns CI/CD
| Anti-pattern |
Problème |
Solution |
@latest ou @main sur les actions |
Non reproductible |
Pinner avec @v4 ou SHA |
Secrets en echo dans les logs |
Fuite de secrets |
Utiliser les secrets natifs, masquer les outputs |
| Job unique géant |
Lent, pas de parallélisme |
Séparer en jobs indépendants |
| Pas de timeout |
Jobs bloqués indéfiniment |
Ajouter timeout-minutes |
Skip tests sur main |
Régressions en prod |
Toujours tester avant deploy |
allow_failure: true partout |
Problèmes ignorés |
Limiter aux tests flaky avec suivi |
| Docker build sans cache |
Builds lents |
Multi-stage + cache layers |
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: cicd-pipeline3description: Conventions et bonnes pratiques CI/CD pour GitHub Actions, GitLab CI et autres plateformes. Utilise cette skill quand l'utilisateur crée, modifie ou debug un pipeline CI/CD, ou demande des conseils sur l'intégration continue. Use when this capability is needed.4---56# CI/CD Pipeline — Conventions et workflows78Ce guide définit les conventions pour créer des pipelines CI/CD robustes et sécurisés. Utilise `iac_guardrails_scan` pour valider les fichiers de configuration.910## Principes fondamentaux1112### 1. Sécurité d'abord13- **Jamais** de secrets hardcodés dans les fichiers de pipeline14- Utiliser les secrets natifs de la plateforme (GitHub Secrets, GitLab CI/CD Variables)15- Limiter les permissions au minimum nécessaire16- Scanner les dépendances et le code dans le pipeline (`dependency_guard`, `secret_scan`)1718### 2. Reproductibilité19- **Pinner** toutes les versions (actions, images Docker, dépendances)20- Utiliser des lockfiles (package-lock.json, poetry.lock)21- Préférer les tags semver aux branches (`actions/checkout@v4`, pas `@main`)22- Utiliser des digests SHA pour les images Docker critiques2324### 3. Performance25- Activer le **cache** pour les dépendances (node_modules, pip cache, .m2)26- Utiliser le **parallélisme** (matrix builds, jobs concurrents)27- Séparer les pipelines (lint rapide vs tests complets)28- Utiliser des images Docker slim/alpine2930### 4. Fiabilité31- Définir des **timeouts** sur chaque job32- Configurer les **retries** pour les étapes réseau (install, deploy)33- Utiliser des **health checks** post-déploiement34- Implémenter le **rollback** automatique3536## Structure recommandée d'un pipeline3738```39┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐40│ Lint & │──▶│ Tests │──▶│ Security │──▶│ Build │41│ Format │ │ Unit │ │ Scan │ │ │42└──────────┘ └──────────┘ └──────────┘ └──────────┘43 │44 ▼45 ┌──────────┐ ┌──────────┐46 │ Deploy │◀──│ Tests │47 │ Prod │ │ E2E │48 └──────────┘ └──────────┘49```5051### Étapes standard521. **Lint & Format** — ESLint, Prettier, Black, Ruff (rapide, fail fast)532. **Tests unitaires** — Jest, Pytest, avec couverture minimum543. **Security scan** — `secret_scan`, `dependency_guard`, SAST554. **Build** — Compilation, bundling, Docker build565. **Tests E2E** — Playwright, Cypress (sur l'artefact buildé)576. **Deploy staging** — Déploiement automatique sur staging587. **Deploy production** — Manuel ou auto avec approval5960## Bonnes pratiques par plateforme6162Pour les détails par plateforme :63- [GitHub Actions](platforms/github-actions.md)64- [GitLab CI](platforms/gitlab-ci.md)6566## Validation avec Collègue6768Avant de merger un pipeline, valide-le :6970```71# Appeler iac_guardrails_scan avec le fichier de pipeline72iac_guardrails_scan({73 files: [{path: ".github/workflows/ci.yml", content: "..."}],74 policy_profile: "strict"75})76```7778## Patterns CI/CD courants7980### Matrix build (multi-version)81Tester sur plusieurs versions de runtime (Node 18/20/22, Python 3.10/3.11/3.12).82Utilise la stratégie matrix de la plateforme.8384### Cache efficace85- Clé de cache = hash du lockfile (`hashFiles('**/package-lock.json')`)86- Restore keys par ordre de spécificité87- Ne pas cacher les artefacts de build (seulement les dépendances)8889### Deploy progressif90- **Canary** : déployer sur 5% du trafic, monitorer, puis 100%91- **Blue/Green** : basculer le load balancer entre 2 environnements92- **Rolling** : remplacer les instances une par une9394### Monorepo95- Détecter les changements par dossier (`paths:` dans GitHub Actions)96- Ne builder/tester que les packages modifiés97- Utiliser des outils comme Turborepo, Nx, ou Lerna9899## Anti-patterns CI/CD100101| Anti-pattern | Problème | Solution |102|-------------|----------|----------|103| `@latest` ou `@main` sur les actions | Non reproductible | Pinner avec `@v4` ou SHA |104| Secrets en `echo` dans les logs | Fuite de secrets | Utiliser les secrets natifs, masquer les outputs |105| Job unique géant | Lent, pas de parallélisme | Séparer en jobs indépendants |106| Pas de timeout | Jobs bloqués indéfiniment | Ajouter `timeout-minutes` |107| Skip tests sur `main` | Régressions en prod | Toujours tester avant deploy |108| `allow_failure: true` partout | Problèmes ignorés | Limiter aux tests flaky avec suivi |109| Docker build sans cache | Builds lents | Multi-stage + cache layers |110111---112> Converted and distributed by [TomeVault](https://tomevault.io/claim/vynodepal) — claim your Tome and manage your conversions.113<!-- tomevault:4.0:skill_md:2026-04-11 -->