0Pricing
DevOps Bootcamp · Lezione

Filtri sui percorsi e build selettive

Attivi solo i workflow e i job interessati da una modifica usando filtri sui percorsi, rilevamento delle modifiche e matrici condizionali in configurazioni monorepo e multi-repo.

Filtri sui percorsi e build selettive è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Il problema delle build sprecate

In un monorepo, una modifica alla documentazione non dovrebbe ricompilare ed eseguire nuovamente il deploy del backend, del frontend e dell'app mobile.

Le build selettive eseguono solo le parti della pipeline interessate da una modifica, risparmiando tempo e minuti del runner.

Filtri sui percorsi nei trigger

L'approccio più semplice consiste nel filtro paths sul trigger. Un workflow viene eseguito solo quando cambiano file che corrispondono al pattern.

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

Ignorare i percorsi

Può anche fare l'opposto con paths-ignore: esegua il workflow per tutto tranne che per i percorsi elencati.

È utile per saltare la CI quando cambiano solo i file della documentazione.

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

Limiti dei filtri dei trigger

I filtri a livello di trigger decidono se eseguire l'intero workflow. In un monorepo, però, spesso si desidera un solo workflow che decida quali job eseguire.

A questo scopo, rilevi le modifiche all'interno del workflow e scelga un ramo in base al risultato.

Azione per rilevare le modifiche

L'azione dorny/paths-filter analizza il diff e restituisce valori booleani per ogni gruppo di percorsi indicato.

I job successivi leggono questi output per decidere se eseguire.

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

Condizionare i job alle modifiche rilevate

Un job di rilevamento espone degli output; i job a valle usano if con il contesto needs per essere eseguiti in modo condizionale.

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

Collegare gli output

Il job di rilevamento deve dichiarare gli outputs che inoltrano i risultati del filtro, in modo che gli altri job possano leggerli.

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

Matrici dinamiche

Per molti servizi, può creare una matrice dinamica a partire dai percorsi modificati, così solo i servizi modificati entrano nella matrice.

Generi un elenco JSON in un job e lo passi alla matrice del job successivo.

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

Git diff per il rilevamento

Può rilevare le modifiche anche con git puro. Confronti il commit corrente con la base per elencare le directory modificate.

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

Controlli obbligatori e skip

Attenzione: se un controllo di stato obbligatorio viene saltato perché non è cambiato nulla, la protezione del branch potrebbe bloccare il merge in attesa del controllo.

La soluzione consiste nell'aggiungere un job gate finale che abbia sempre esito positivo e sia l'unico controllo obbligatorio, riepilogando i job condizionali.

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

Caching per pacchetto

Le build selettive si combinano bene con le cache per pacchetto. Usi come chiave della cache il lockfile di ciascun servizio, così le modifiche non correlate non la invalidano.

Insieme, mantengono rapide le pipeline del monorepo anche quando il repository cresce.

Verifica rapida

Verifichi la Sua comprensione delle build selettive.

Riepilogo

Ha imparato a compilare solo ciò che è cambiato.

  • paths e paths-ignore regolano l'esecuzione degli interi workflow
  • Le azioni di rilevamento delle modifiche restituiscono valori booleani per ciascun percorso
  • I job usano if + needs per essere eseguiti in modo condizionale e le matrici possono essere create dinamicamente
  • Aggiunga un job gate con always() per la compatibilità con i controlli obbligatori

Le build selettive mantengono la CI/CD dei monorepo rapida ed economica.

Domande Frequenti

La lezione «Filtri sui percorsi e build selettive» è gratuita?

Sì — il testo completo di «Filtri sui percorsi e build selettive» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Filtri sui percorsi e build selettive»?

Attivi solo i workflow e i job interessati da una modifica usando filtri sui percorsi, rilevamento delle modifiche e matrici condizionali in configurazioni monorepo e multi-repo. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Filtri sui percorsi e build selettive»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. CI/CD per monorepo
  2. Workflow tra repository
  3. Gestione centralizzata dei workflow
  4. Filtri sui percorsi e build selettive
← Torna a DevOps Bootcamp