0Pricing
DevOps Bootcamp · Leçon

Filtrage des chemins et compilations sélectives

Déclenchez uniquement les flux de travail et les tâches concernés par une modification grâce aux filtres de chemins, à la détection des changements et aux matrices conditionnelles dans les monodépôts et les configurations multiréférentiels.

Filtrage des chemins et compilations sélectives est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.

Le problème des compilations inutiles

Dans un monorepo, une modification de la documentation ne devrait pas entraîner la recompilation et le redéploiement du serveur dorsal, de l’interface utilisateur et de l’application mobile.

Les compilations sélectives n’exécutent que les parties du pipeline affectées par une modification, ce qui permet d’économiser du temps et des minutes d’exécution.

Filtres de chemin sur les déclencheurs

L’approche la plus simple consiste à utiliser le filtre paths sur le déclencheur. Un flux de travail ne s’exécute que lorsque des fichiers correspondant au motif sont modifiés.

on:
  push:
    paths:
      - 'services/api/**'

Ignorer des chemins

Vous pouvez également faire l’inverse avec paths-ignore : exécuter le flux de travail pour tout, sauf pour les chemins indiqués.

C’est pratique pour éviter la CI lors de modifications concernant uniquement la documentation.

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**.md'

Limites des filtres de déclenchement

Les filtres au niveau du déclencheur décident si l’ensemble du flux de travail s’exécute. Mais dans un monorepo, vous voulez souvent qu’un seul flux de travail décide quelles tâches exécuter.

Pour cela, détectez les modifications dans le flux de travail, puis branchez-vous selon le résultat.

Action de détection des modifications

L’action dorny/paths-filter inspecte les différences et produit des valeurs booléennes pour chaque groupe nommé de chemins.

Les tâches suivantes lisent ces résultats pour décider si elles doivent s’exécuter.

  - uses: dorny/paths-filter@v3
    id: changes
    with:
      filters: |
        api:
          - 'services/api/**'
        web:
          - 'services/web/**'

Conditionner les tâches aux modifications détectées

Une tâche de détection expose des résultats ; les tâches en aval utilisent if avec le contexte needs pour s’exécuter sous condition.

  build-api:
    needs: detect
    if: needs.detect.outputs.api == 'true'
    runs-on: ubuntu-latest
    steps:
      - run: ./build-api.sh

Relier les résultats

La tâche de détection doit déclarer des outputs qui transmettent les résultats du filtre afin que les autres tâches puissent les lire.

  detect:
    runs-on: ubuntu-latest
    outputs:
      api: ${{ steps.changes.outputs.api }}
      web: ${{ steps.changes.outputs.web }}

Matrices dynamiques

Pour de nombreux services, vous pouvez créer une matrice dynamique à partir des chemins modifiés, afin que seuls les services modifiés y soient inclus.

Générez une liste JSON dans une tâche et transmettez-la à la matrice de la tâche suivante.

    strategy:
      matrix:
        service: ${{ fromJSON(needs.detect.outputs.list) }}

Différence Git pour la détection

Vous pouvez également détecter les modifications avec Git directement. Comparez la validation actuelle à la base pour lister les répertoires modifiés.

git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -u

Vérifications obligatoires et tâches ignorées

Attention : si une vérification d’état obligatoire est ignorée parce que rien n’a changé, la protection de branche peut bloquer la fusion en l’attendant.

La solution consiste à ajouter une tâche de contrôle finale qui réussit toujours et constitue la seule vérification obligatoire, tout en résumant les tâches conditionnelles.

  gate:
    needs: [build-api, build-web]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all required jobs resolved'

Mise en cache par paquet

Les compilations sélectives s’accordent bien avec les caches par paquet. Basez la clé du cache sur le fichier de verrouillage de chaque service afin que les modifications sans rapport ne l’invalident pas.

Ensemble, ces mécanismes permettent aux pipelines de monorepo de rester rapides, même lorsque le dépôt grandit.

Vérification rapide

Évaluez votre compréhension des compilations sélectives.

Récapitulatif

Vous avez appris à ne compiler que ce qui a changé.

  • paths et paths-ignore conditionnent les flux de travail entiers
  • Les actions de détection des modifications produisent des valeurs booléennes pour chaque chemin
  • Les tâches utilisent if + needs pour s’exécuter sous condition, et les matrices peuvent être créées dynamiquement
  • Ajoutez une tâche de contrôle always() pour assurer la compatibilité avec les vérifications obligatoires

Les compilations sélectives rendent la CI/CD des monorepos rapide et économique.

Questions Fréquemment Posées

La leçon « Filtrage des chemins et compilations sélectives » est-elle gratuite ?

Oui — le texte complet de « Filtrage des chemins et compilations sélectives » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Filtrage des chemins et compilations sélectives » ?

Déclenchez uniquement les flux de travail et les tâches concernés par une modification grâce aux filtres de chemins, à la détection des changements et aux matrices conditionnelles dans les monodépôts… Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?

Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Filtrage des chemins et compilations sélectives » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?

Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Intégration et livraison continues pour les monodépôts
  2. Flux de travail entre dépôts
  3. Gestion centralisée des flux de travail
  4. Filtrage des chemins et compilations sélectives
← Retour à DevOps Bootcamp