CI/CD : les fondamentaux
Intégration Continue (CI)
La CI automatise la vérification du code à chaque commit :
- Compilation et build
- Exécution des tests
- Analyse de code (linting, sécurité)
- Vérification des types (TypeScript)
Déploiement Continu (CD)
Le CD automatise la mise en production après validation :
- Build de l’image Docker
- Push vers le registre
- Déploiement sur le serveur
- Vérification post-déploiement
Chez Lueur Externe, chaque projet dispose d’un pipeline CI/CD complet.
Pipeline GitLab CI
Configuration de base
stages:
- lint
- test
- build
- deploy
variables:
NODE_VERSION: "20"
lint:
stage: lint
image: node:${NODE_VERSION}-alpine
script:
- npm ci
- npm run lint
- npx tsc --noEmit
test:
stage: test
image: node:${NODE_VERSION}-alpine
script:
- npm ci
- npx vitest run --coverage
coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
build:
stage: build
image: docker:24
services:
- docker:24-dind
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- main
deploy:
stage: deploy
script:
- ssh $DEPLOY_USER@$DEPLOY_HOST "
docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA &&
docker compose up -d"
only:
- main
environment:
name: production
url: https://monsite.fr
GitHub Actions (alternative)
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx vitest run
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- run: docker build -t app .
- run: docker push app
Bonnes pratiques
Tests obligatoires
Aucun merge sans tests verts. Configurez la protection de branche :
- Tests unitaires : obligatoires
- Tests d’intégration : obligatoires
- Tests E2E : sur les branches principales
- Coverage minimum : 80 %
Déploiement atomique
Chaque déploiement est une unité indivisible :
- Nouvelle version déployée en parallèle
- Bascule du trafic instantanée
- Rollback en une commande si problème
Secrets et variables
Ne jamais commiter de secrets dans le code :
- Utilisez les variables CI/CD de GitLab/GitHub
- Chiffrez les secrets sensibles
- Rotez les clés régulièrement
Notifications
Configurez des alertes sur :
- Échec de pipeline
- Déploiement réussi
- Régression de performance
- Erreurs en production
Monitoring post-déploiement
Après chaque déploiement, vérifiez automatiquement :
- Le site répond (health check)
- Les performances sont stables (Lighthouse CI)
- Pas d’erreurs JavaScript en console
- Les métriques business sont normales
Notre pipeline chez Lueur Externe
Sur ce site satellite, notre pipeline Lueur Externe inclut :
- Linting TypeScript et CSS
- 400+ tests automatisés (unitaires + property-based)
- Build Astro avec optimisation des assets
- Build Docker multi-stage
- Déploiement via Docker Compose
- Health check post-déploiement
Conclusion
Le CI/CD est un investissement qui paie dès le premier déploiement. Il réduit les erreurs humaines, accélère les livraisons et améliore la confiance de l’équipe. Contactez Lueur Externe pour mettre en place votre pipeline CI/CD.