Aller au contenu
DevOps18 février 20264 min

CI/CD avec GitHub Actions : pipeline zero-downtime

Mettez en place un pipeline CI/CD robuste avec GitHub Actions pour déployer en continu sans interruption de service.

Par Pixee Play
CI/CD avec GitHub Actions : pipeline zero-downtime

Un pipeline de déploiement continu bien conçu est le pilier de toute équipe de développement performante. GitHub Actions, intégré nativement à GitHub, offre une solution puissante et flexible pour automatiser les tests, les builds et les déploiements. Ce guide détaille comment construire un pipeline CI/CD complet qui garantit des déploiements zero-downtime en production.

Pourquoi GitHub Actions ?

GitHub Actions s'est imposé comme la solution CI/CD de référence pour plusieurs raisons :

  • Intégration native : pas de service tiers à configurer, tout est dans le même écosystème que votre code.
  • Marketplace riche : des milliers d'actions réutilisables pour tous les cas d'usage (déploiement AWS, Vercel, Docker, notifications Slack).
  • Runners hébergés : GitHub fournit des machines virtuelles Linux, macOS et Windows, avec la possibilité d'utiliser vos propres runners.
  • YAML lisible : les workflows sont définis en YAML, versionnés avec le code et facilement auditables.
  • Gratuit pour l'open-source : et avec un généreux quota gratuit pour les repos privés.

Architecture du pipeline

Un pipeline CI/CD robuste se compose de plusieurs étapes séquentielles et parallèles :

Étape 1 : Lint et formatage

Première ligne de défense : vérifier que le code respecte les conventions de l'équipe. Nous exécutons en parallèle :

  • ESLint pour la qualité du code JavaScript/TypeScript
  • Prettier pour le formatage
  • TypeScript compiler en mode strict pour la vérification des types

Ces vérifications s'exécutent en moins de 30 secondes et attrapent la majorité des problèmes triviaux.

Étape 2 : Tests automatisés

Nous exécutons trois niveaux de tests en parallèle :

  • Tests unitaires (Vitest) : rapides, isolés, couvrent la logique métier.
  • Tests d'intégration : vérifient les interactions entre composants et services.
  • Tests end-to-end (Playwright) : simulent des parcours utilisateur réels dans un navigateur.

Les tests E2E tournent sur un environnement de preview éphémère qui reproduit fidèlement la production.

Étape 3 : Build et analyse

Une fois les tests passés :

  • Build de production optimisé (Next.js, Vite ou autre)
  • Analyse du bundle (taille, dépendances, code splitting)
  • Audit de sécurité des dépendances (npm audit, Snyk)
  • Vérification des Core Web Vitals avec Lighthouse CI

Étape 4 : Déploiement zero-downtime

C'est l'étape critique. Pour garantir zéro interruption de service, nous utilisons la stratégie blue-green ou rolling deployment :

  1. Le nouveau build est déployé sur un environnement « green » distinct de la production active (« blue »).
  2. Des health checks automatisés vérifient que le nouvel environnement répond correctement.
  3. Le load balancer bascule progressivement le trafic vers le nouvel environnement.
  4. Si un problème est détecté, le trafic est immédiatement rerouté vers l'ancien environnement (rollback automatique).
  5. Une fois la bascule confirmée, l'ancien environnement est recyclé.

Gestion des secrets et des environnements

La sécurité du pipeline est primordiale :

  • Les secrets (clés API, tokens, mots de passe) sont stockés dans les GitHub Secrets, jamais dans le code.
  • Les environnements GitHub (staging, production) permettent de définir des règles de protection : approbation obligatoire, délai d'attente, restrictions par branche.
  • Les OIDC tokens permettent de s'authentifier auprès des cloud providers (AWS, GCP, Azure) sans stocker de clés longue durée.

Optimisation des temps de build

Un pipeline lent freine l'équipe. Nos techniques d'optimisation :

  • Cache des dépendances : mise en cache du dossier node_modules et du cache npm/pnpm entre les runs.
  • Parallélisation : exécution simultanée des jobs indépendants (lint, tests unitaires, tests E2E).
  • Build incrémental : avec Turborepo, seuls les packages modifiés sont rebuilds.
  • Runners self-hosted : pour les projets à fort volume, des runners dédiés sur des machines performantes.

Monitoring post-déploiement

Le pipeline ne s'arrête pas au déploiement. Nous intégrons :

  • Notification Slack automatique avec le statut du déploiement, incluant le lien vers le commit et le changelog.
  • Smoke tests post-déploiement qui vérifient les fonctionnalités critiques en production (tunnel d'achat, API, authentification).
  • Monitoring des erreurs via Sentry, avec alertes en cas de spike d'erreurs dans les 30 minutes suivant un déploiement.
  • Dashboard de métriques pour suivre les Core Web Vitals en temps réel et détecter les régressions de performance.

Bonnes pratiques pour les workflows GitHub Actions

Quelques règles que nous appliquons systématiquement :

  • Utiliser des versions figées pour les actions tierces (SHA au lieu de tag) pour éviter les attaques de supply chain.
  • Définir des timeouts sur chaque job pour éviter les runners bloqués.
  • Activer les Concurrency groups pour annuler les déploiements obsolètes quand un nouveau push arrive.
  • Séparer les workflows de CI (tests) et de CD (déploiement) pour une meilleure lisibilité et un contrôle plus fin des permissions.

Conclusion

Un pipeline CI/CD bien conçu avec GitHub Actions n'est pas un luxe : c'est un investissement essentiel qui améliore la qualité du code, accélère les livraisons et élimine le stress des mises en production. Chez Pixee Play, nous configurons et optimisons des pipelines CI/CD pour tous nos projets, avec pour objectif de rendre chaque déploiement aussi banal et fiable qu'un simple git push. Contactez-nous pour auditer et améliorer votre pipeline actuel.