0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lektion

Pfadfilterung und selektive Builds

Starten Sie nur die von einer Änderung betroffenen Workflows und Jobs mithilfe von Pfadfiltern, Änderungserkennung und bedingten Matrizen in Monorepos und Multi-Repo-Setups.

Pfadfilterung und selektive Builds ist eine kostenlose CI/CD with GitHub Actions & DevOps Pipelines-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des CI/CD with GitHub Actions & DevOps Pipelines-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CI/CD with GitHub Actions & DevOps Pipelines-Kurs umfasst insgesamt 4 Lektionen.

Das Problem verschwendeter Builds

In einem Monorepo sollte eine Änderung an der Dokumentation nicht dazu führen, dass Backend, Frontend und mobile App neu erstellt und bereitgestellt werden.

Selektive Builds führen nur die von einer Änderung betroffenen Teile der Pipeline aus und sparen dadurch Zeit und Runner-Minuten.

Pfadfilter für Trigger

Der einfachste Ansatz ist der paths-Filter am Trigger. Ein Workflow wird nur ausgeführt, wenn sich Dateien ändern, die dem Muster entsprechen.

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

Pfade ignorieren

Mit paths-ignore können Sie auch das Gegenteil festlegen: Der Workflow wird für alles ausgeführt, außer für die aufgelisteten Pfade.

Das ist praktisch, um CI bei Änderungen ausschließlich an der Dokumentation zu überspringen.

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

Grenzen von Trigger-Filtern

Filter auf Trigger-Ebene entscheiden, ob der gesamte Workflow ausgeführt wird. In einem Monorepo möchten Sie jedoch häufig einen Workflow, der entscheidet, welche Jobs ausgeführt werden.

Dazu erkennen Sie Änderungen innerhalb des Workflows und verzweigen anhand des Ergebnisses.

Aktion zur Änderungserkennung

Die Aktion dorny/paths-filter untersucht den Diff und gibt für jede benannte Pfadgruppe boolesche Werte aus.

Spätere Jobs lesen diese Ausgaben, um zu entscheiden, ob sie ausgeführt werden.

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

Jobs anhand erkannter Änderungen steuern

Ein Erkennungsjob stellt Ausgaben bereit. Nachgelagerte Jobs verwenden if mit dem needs-Kontext, um bedingt ausgeführt zu werden.

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

Ausgaben verknüpfen

Der Erkennungsjob muss outputs deklarieren, die die Filterergebnisse weitergeben, damit andere Jobs sie lesen können.

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

Dynamische Matrizen

Für viele Services können Sie eine Matrix dynamisch aus den geänderten Pfaden erstellen, sodass nur geänderte Services in die Matrix aufgenommen werden.

Erzeugen Sie in einem Job eine JSON-Liste und übergeben Sie sie an die Matrix des nächsten Jobs.

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

Git-Diff zur Erkennung

Sie können Änderungen auch mit dem unverarbeiteten Git ermitteln. Vergleichen Sie den aktuellen Commit mit der Basis, um geänderte Verzeichnisse aufzulisten.

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

Erforderliche Prüfungen und Überspringen

Achtung: Wenn eine erforderliche Statusprüfung übersprungen wird, weil sich nichts geändert hat, kann der Branch-Schutz den Merge blockieren und auf diese Prüfung warten.

Die Lösung ist ein abschließender Gate-Job, der immer erfolgreich ist und die einzige erforderliche Prüfung darstellt, indem er die bedingten Jobs zusammenfasst.

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

Caching pro Paket

Selektive Builds lassen sich gut mit Caches pro Paket kombinieren. Verwenden Sie die Lockdatei jedes Services als Cache-Schlüssel, damit unabhängige Änderungen den Cache nicht ungültig machen.

Zusammen halten sie Monorepo-Pipelines auch bei wachsendem Repository schnell.

Kurzer Test

Testen Sie Ihr Verständnis selektiver Builds.

Zusammenfassung

Sie haben gelernt, nur das zu bauen, was sich geändert hat.

  • paths und paths-ignore steuern gesamte Workflows
  • Aktionen zur Änderungserkennung geben boolesche Werte pro Pfad aus
  • Jobs verwenden if + needs, um bedingt ausgeführt zu werden, und Matrizen können dynamisch erstellt werden
  • Fügen Sie einen always()-Gate-Job hinzu, damit erforderliche Prüfungen kompatibel bleiben

Selektive Builds halten Monorepo-CI/CD schnell und kostengünstig.

Häufig gestellte Fragen

Ist die Lektion „Pfadfilterung und selektive Builds“ kostenlos?

Ja — der vollständige Text von „Pfadfilterung und selektive Builds“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CI/CD with GitHub Actions & DevOps Pipelines-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CI/CD with GitHub Actions & DevOps Pipelines-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Pfadfilterung und selektive Builds“?

Starten Sie nur die von einer Änderung betroffenen Workflows und Jobs mithilfe von Pfadfiltern, Änderungserkennung und bedingten Matrizen in Monorepos und Multi-Repo-Setups. Du übst CI/CD with GitHub Actions & DevOps Pipelines mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um CI/CD with GitHub Actions & DevOps Pipelines zu starten?

Keine Vorkenntnisse erforderlich. CI/CD with GitHub Actions & DevOps Pipelines auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Pfadfilterung und selektive Builds“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser CI/CD with GitHub Actions & DevOps Pipelines-Lektion Code schreiben und ausführen?

Ja. Jede CI/CD with GitHub Actions & DevOps Pipelines-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. CI/CD für Monorepos
  2. Repositoryübergreifende Workflows
  3. Zentrale Workflow-Verwaltung
  4. Pfadfilterung und selektive Builds
← Zurück zu CI/CD with GitHub Actions & DevOps Pipelines