| name | cicd-pipeline |
| description | 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. |
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 |