Frontend Development

Des garde-fous pour la croissance : Mise en place de la surveillance et des alertes Core Web Vitals dans les pipelines CI/CD

La performance n'est pas seulement une fonctionnalité souhaitable dans le développement web moderne ; c'est un composant critique de l'expérience utilisateur, du classement SEO et des taux de conversion. Avec l'introduction des Core Web Vitals par Google, la mesure de la performance est passée d'un exercice réactif à une exigence proactive. Cependant, s'appuyer sur des audits manuels n'est plus suffisant pour les équipes pratiquant l'intégration continue et le déploiement continu (CI/CD). Dans cet article, nous explorerons comment automatiser la surveillance et les alertes Core Web Vitals directement dans vos pipelines CI/CD pour détecter les régressions avant qu'elles n'atteignent la production.

Pourquoi intégrer la performance dans le CI/CD ?

Les tests de performance traditionnels ont souvent lieu après le déploiement ou dans des environnements isolés qui ne reflètent pas les conditions réelles. En intégrant des vérifications Core Web Vitals dans votre pipeline CI/CD, vous établissez un « budget de performance » pour chaque demande de tirage (pull request). Cette approche garantit que :

  • Les régressions sont détectées tôt : Les modifications de code qui dégradent le LCP (Largest Contentful Paint), le FID (First Input Delay) ou le CLS (Cumulative Layout Shift) sont signalées immédiatement.
  • La performance devient une responsabilité partagée : Les développeurs reçoivent un retour immédiat sur l'impact de leur code sur la performance.
  • La confiance dans le déploiement augmente : Les vérifications automatisées offrent un filet de sécurité contre les baisses accidentelles de performance.

Choisir les bons outils

Bien que Lighthouse soit la référence pour générer des rapports de performance, son exécution dans un environnement de navigateur headless au sein d'un pipeline CI/CD peut être gourmand en ressources. Pour des vérifications légères et rapides, des outils comme puppeteer, playwright ou des services spécialisés tels que l'API WebPageTest sont d'excellents choix. Alternativement, lighthouse-ci fournit un outil CLI robuste spécifiquement conçu à cet effet.

Pour ce guide, nous nous concentrerons sur l'intégration de lighthouse-ci via GitHub Actions, car il offre un équilibre parfait entre des métriques détaillées et une facilité d'intégration.

Configuration du pipeline

Pour commencer, vous devez installer le CLI Lighthouse CI en tant que dépendance de développement dans votre projet. Cela vous permet d'exécuter des audits localement et dans votre environnement CI.

npm install --save-dev @lhci/cli

Ensuite, créez un fichier de configuration, .lighthouserc.json, pour définir vos budgets de performance. Ce fichier indique à l'outil CI quelles métriques suivre et quelles sont les seuils acceptables.

{
  "ci": {
    "collect": {
      "numberOfRuns": 3,
      "settings": {
        "preset": "desktop"
      }
    },
    "assert": {
      "assertions": {
        "categories:performance": ["error", { "minScore": 0.9 }],
        "largest-contentful-paint": ["error", { "maxNumericValue": 2500 }],
        "first-input-delay": ["error", { "maxNumericValue": 100 }],
        "cumulative-layout-shift": ["error", { "maxNumericValue": 0.1 }]
      }
    },
    "upload": {
      "target": "filesystem"
    }
  }
}

Dans cette configuration, nous exigeons que la catégorie de performance globale obtienne un score d'au moins 0,9. Nous définissons également des limites numériques strictes pour le LCP (2,5 secondes), le FID (100 ms) et le CLS (0,1). Si l'un de ces seuils est dépassé, la build CI échouera.

Intégration avec GitHub Actions

Maintenant, connectons cela à votre pipeline CI/CD. Créez un fichier de workflow dans .github/workflows/performance.yml. Ce script se déclenchera à chaque demande de tirage, collectera les métriques et rapportera les résultats.

name: Performance CI

on: [pull_request]

jobs:
  lighthouse-ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Install dependencies
        run: npm ci
      
      - name: Run local server
        run: npm start &
        working-directory: ./
        continue-on-error: true

      - name: Audit URLs
        run: npx @lhci/cli@0.9.x collect --url=http://localhost:3000

Pour garantir que le pipeline fournit des retours exploitables, vous devez également configurer le plugin Lighthouse CI pour publier des commentaires sur la demande de tirage. Cela offre une visibilité immédiate aux développeurs sur les métriques spécifiques qui ont échoué et de combien.

Alertes et surveillance avancées

Bien que l'échec d'une build soit efficace pour empêcher la fusion de code défectueux, cela n'aide pas à suivre les tendances dans le temps ou à alerter sur les anomalies en production. Pour une surveillance complète, envisagez d'intégrer des services comme l'API Google Lighthouse CI pour télécharger les rapports sur un tableau de bord. Vous pouvez ensuite configurer des alertes dans Slack ou par e-mail si un déploiement entraîne une baisse significative des scores Core Web Vitals par rapport à la ligne de base.

Conclusion

La mise en place de la surveillance Core Web Vitals dans votre pipeline CI/CD transforme la performance d'un concept abstrait en une métrique de qualité mesurable et applicable. En automatisant ces vérifications, vous permettez à votre équipe de livrer plus rapidement sans sacrifier l'expérience utilisateur. Commencez petit en ajoutant une seule métrique, et élargissez progressivement vos budgets de performance à mesure que votre application mûrit. Le résultat est une application web plus robuste, performante et conviviale.

Share: