CI/CD met GitHub Actions en DevOps-pijplijnen · Les

Padfiltering en selectieve builds

Start alleen de workflows en jobs die door een wijziging worden beïnvloed met padfilters, wijzigingsdetectie en conditionele matrices in monorepo- en multirepo-omgevingen.

Les 4 van 413 stappen

Padfiltering en selectieve builds is een gratis CI/CD met GitHub Actions en DevOps-pijplijnen-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject CI/CD met GitHub Actions en DevOps-pijplijnen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus CI/CD met GitHub Actions en DevOps-pijplijnen bevat in totaal 4 lessen.

Het probleem van verspilde builds

In een monorepo hoort een wijziging in de documentatie niet de backend, frontend en mobiele app opnieuw te bouwen en te implementeren.

Selectieve builds voeren alleen de onderdelen van de pijplijn uit die door een wijziging worden beïnvloed. Dat bespaart tijd en minuten op de runner.

Padfilters voor triggers

De eenvoudigste aanpak is het paths-filter op de trigger. Een workflow wordt alleen uitgevoerd wanneer bestanden die overeenkomen met het patroon wijzigen.

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

Paden negeren

Je kunt ook het omgekeerde doen met paths-ignore: voer de workflow uit voor alles behalve de vermelde paden.

Dit is handig om CI over te slaan bij wijzigingen die alleen de documentatie betreffen.

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

Beperkingen van triggerfilters

Filters op triggerniveau bepalen of de hele workflow wordt uitgevoerd. Maar in een monorepo wil je vaak één workflow die bepaalt welke taken worden uitgevoerd.

Daarvoor detecteer je wijzigingen binnen de workflow en vertak je op basis van het resultaat.

Actie voor wijzigingsdetectie

De actie dorny/paths-filter inspecteert het verschil en geeft Booleaanse waarden terug voor elke benoemde groep paden.

Latere taken lezen deze uitvoer om te bepalen of ze moeten worden uitgevoerd.

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

Taken conditioneel uitvoeren op basis van gedetecteerde wijzigingen

Een detectietaak stelt uitvoer beschikbaar; volgende taken gebruiken if met de context needs om conditioneel te worden uitgevoerd.

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

De uitvoer verbinden

De detectietaak moet outputs declareren die de filterresultaten doorgeven, zodat andere taken deze kunnen lezen.

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

Dynamische matrices

Voor veel services kun je dynamisch een matrix maken op basis van de gewijzigde paden, zodat alleen gewijzigde services in de matrix terechtkomen.

Genereer in één taak een JSON-lijst en geef deze door aan de matrix van de volgende taak.

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

Git Diff voor detectie

Je kunt wijzigingen ook met onbewerkte git detecteren. Vergelijk de huidige commit met de basis om gewijzigde mappen weer te geven.

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

Vereiste controles en overgeslagen taken

Let op: als een vereiste statuscontrole wordt overgeslagen omdat er niets is gewijzigd, kan branchbeveiliging het samenvoegen blokkeren terwijl daarop wordt gewacht.

De oplossing is een laatste poorttaak toe te voegen die altijd slaagt en de enige vereiste controle is, en die de conditionele taken samenvat.

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

Caching per pakket

Selectieve builds werken goed samen met caches per pakket. Baseer de cachesleutel voor elke service op het lockbestand, zodat wijzigingen die geen verband houden met die service de cache niet ongeldig maken.

Samen houden ze monorepo-pijplijnen snel, ook als de repository groeit.

Korte controle

Test je kennis van selectieve builds.

Samenvatting

Je hebt geleerd alleen te bouwen wat is gewijzigd.

  • paths en paths-ignore bepalen of volledige workflows worden uitgevoerd
  • Acties voor wijzigingsdetectie geven Booleaanse waarden per pad terug
  • Taken gebruiken if + needs om conditioneel te worden uitgevoerd en matrices kunnen dynamisch worden opgebouwd
  • Voeg een always()-poorttaak toe voor compatibiliteit met vereiste controles

Selectieve builds houden monorepo-CI/CD snel en efficiënt.

Gratis beginnen

Leer CI/CD met GitHub Actions en DevOps-pijplijnen met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Padfiltering en selectieve builds” gratis?

Ja — de volledige tekst van “Padfiltering en selectieve builds” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus CI/CD met GitHub Actions en DevOps-pijplijnen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus CI/CD met GitHub Actions en DevOps-pijplijnen bevat in totaal 4 lessen.

Wat leer ik in “Padfiltering en selectieve builds”?

Start alleen de workflows en jobs die door een wijziging worden beïnvloed met padfilters, wijzigingsdetectie en conditionele matrices in monorepo- en multirepo-omgevingen. Je oefent met CI/CD met GitHub Actions en DevOps-pijplijnen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met CI/CD met GitHub Actions en DevOps-pijplijnen te beginnen?

Ervaring vooraf is niet nodig. CI/CD met GitHub Actions en DevOps-pijplijnen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Padfiltering en selectieve builds”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over CI/CD met GitHub Actions en DevOps-pijplijnen?

Ja. Elke les over CI/CD met GitHub Actions en DevOps-pijplijnen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. CI/CD voor monorepo's
  2. Workflows tussen repositories
  3. Gecentraliseerd workflowbeheer
  4. Padfiltering en selectieve builds
← Terug naar CI/CD met GitHub Actions en DevOps-pijplijnen