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 CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CI/CD with GitHub Actions & DevOps Pipelines 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.shRelier 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 -uVé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é.
pathsetpaths-ignoreconditionnent 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+needspour 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 CI/CD with GitHub Actions & DevOps Pipelines, passe à CoddyKit PRO. Le cours CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines ?
Aucune expérience préalable n'est requise. CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines ?
Oui. Chaque leçon CI/CD with GitHub Actions & DevOps Pipelines 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
- Intégration et livraison continues pour les monodépôts
- Flux de travail entre dépôts
- Gestion centralisée des flux de travail
- Filtrage des chemins et compilations sélectives