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

CI/CD für Monorepos

Erkunden Sie Strategien zur Optimierung von CI/CD-Pipelines in Monorepos, einschließlich der selektiven Ausführung von Jobs auf Grundlage geänderter Dateien.

CI/CD für Monorepos ist eine kostenlose CI/CD with GitHub Actions & DevOps Pipelines-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was ist ein Monorepo?

Ein Monorepo ist ein einzelnes Repository, das den Code für viele Projekte oder Anwendungen enthält. Anstatt für jeden Dienst oder jede Bibliothek ein eigenes Repository zu verwenden, liegt alles zusammen an einem Ort.

Stellen Sie sich das wie eine große Bibliothek mit vielen Büchern (Projekten) in einem Gebäude (Repository) vor, statt wie ein eigenes Gebäude für jedes Buch. Dieser Ansatz hat insbesondere für CI/CD Vor- und Nachteile.

CI/CD-Herausforderungen in Monorepos

Monorepos bieten zwar Vorteile wie das einfachere Teilen von Code, können aber Herausforderungen für Continuous Integration/Continuous Delivery (CI/CD)-Pipelines mit sich bringen:

  • Langsame Builds: Wenn jede Änderung einen vollständigen Build und die gesamte Testsuite für *alle* Projekte auslöst, werden Pipelines sehr langsam.
  • Ressourcenverschwendung: Das unnötige Ausführen nicht zusammenhängender Jobs verbraucht Build-Minuten und Ressourcen.
  • Frustration bei Entwicklern: Lange Feedbackschleifen können die Entwicklung verlangsamen.

Die Notwendigkeit selektiven CI/CDs

Der Schlüssel zu effizientem CI/CD in Monorepos ist die gezielte Auswahl. Unsere Pipelines sollten intelligent genug sein, um:

  • Zu erkennen, *was* sich geändert hat.
  • CI/CD-Jobs *nur* für die von diesen Änderungen betroffenen Projekte auszuführen.

Dieser Ansatz spart Zeit, senkt den Ressourcenverbrauch und liefert Entwicklern schnelleres Feedback.

Auslösen anhand von Pfaden: `on.paths`

GitHub Actions bietet mit dem paths-Filter in Ihren Workflow-Triggern eine leistungsfähige Möglichkeit, eine gezielte Ausführung zu erreichen. Sie können Verzeichnisse oder Dateien angeben, deren Änderung einen Workflow auslösen soll.

Wenn eine Datei außerhalb dieser Pfade geändert wird, wird der Workflow nicht ausgeführt. Das ist ideal für Monorepos!

on:
  push:
    branches:
      - main
    paths:
      - 'apps/frontend/**'
      - 'libs/shared/**'

Pfadfilter in Aktion

Hier sehen Sie einen einfachen Workflow, der nur ausgeführt wird, wenn Änderungen an Dateien innerhalb des Verzeichnisses apps/backend oder an einer bestimmten Datei README.md gepusht werden.

So werden nur relevante Tests oder Builds für Ihren Backend-Service ausgelöst.

name: Backend CI

on:
  push:
    branches:
      - main
    paths:
      - 'apps/backend/**'
      - 'README.md'

jobs:
  build-backend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build backend app
        run: echo "Building backend..."

Pfade ignorieren: `paths-ignore`

Manchmal soll ein Workflow bei *den meisten* Änderungen ausgeführt werden, aber nicht, wenn nur bestimmte Dateien geändert wurden (z. B. Dokumentation oder Protokolldateien). Dafür eignet sich der paths-ignore-Filter ideal.

Er funktioniert ähnlich wie paths, gibt aber die Dateien an, die den Workflow *nicht* auslösen sollen.

on:
  pull_request:
    branches:
      - main
    paths-ignore:
      - 'docs/**'
      - '**/*.md'

Dynamische gezielte Ausführung mit `git diff`

Für komplexere Logik können Sie Git-Befehle wie git diff innerhalb Ihrer Workflow-Schritte verwenden, um Änderungen dynamisch zu prüfen. So können Sie benutzerdefinierte Bedingungen erstellen.

Beispielsweise können Sie prüfen, ob Änderungen in einem bestimmten Ordner aufgetreten sind, und eine Ausgabevariable setzen, um zu entscheiden, ob ein nachfolgender Job ausgeführt werden soll.

Beispiel für bedingte Jobausführung

Dieser Workflow-Schritt verwendet git diff, um zu prüfen, ob sich zwischen dem aktuellen Commit und dem Basis-Branch Dateien unter apps/api/ geändert haben. Falls dies der Fall ist, setzt er die Ausgabevariable api_changed auf 'true'.

Diese Ausgabe kann anschließend steuern, ob ein Job 'deploy API' ausgeführt wird.

jobs:
  check-changes:
    runs-on: ubuntu-latest
    outputs:
      api_changed: ${{ steps.diff.outputs.api_changed }}
    steps:
      - uses: actions/checkout@v4
      - name: Check API changes
        id: diff
        run: |
          if git diff --quiet ${{ github.event.before }} ${{ github.sha }} -- apps/api/;
          then
            echo "api_changed=false" >> $GITHUB_OUTPUT
          else
            echo "api_changed=true" >> $GITHUB_OUTPUT
          fi

  deploy-api:
    needs: check-changes
    if: needs.check-changes.outputs.api_changed == 'true'
    runs-on: ubuntu-latest
    steps:
      - name: Deploy API
        run: echo "Deploying API..."

Monorepo-Struktur für CI/CD

Eine gut organisierte Monorepo-Struktur vereinfacht selektives CI/CD erheblich. Das Gruppieren zusammengehöriger Dateien und Projekte in klar definierten Verzeichnissen erleichtert die effektive Verwendung von paths-Filtern.

  • /apps/frontend
  • /apps/backend
  • /libs/shared
  • /docs

Eine klare Trennung ermöglicht eine präzise Ausrichtung der Workflows.

Monorepo-CI/CD-Quiz

Die Optimierung von CI/CD für Monorepos ist entscheidend, um das Entwicklungstempo und eine effiziente Ressourcennutzung aufrechtzuerhalten. Überlegen Sie, welche Strategien die Herausforderungen einer großen, zusammengefassten Codebasis am besten bewältigen.

Zusammenfassung und nächste Schritte

Sie haben gelernt, wie Sie CI/CD-Herausforderungen in Monorepos durch die Implementierung einer selektiven Jobausführung bewältigen. Mit den paths-Filtern von GitHub Actions und fortgeschrittenen git diff-Techniken können Sie sicherstellen, dass Ihre Pipelines nur das Notwendige ausführen.

Das führt zu schnellerem Feedback, geringeren Kosten und einer reibungsloseren Entwicklung. Erkunden Sie weiter, wie Sie Ihre Workflows für noch mehr Effizienz optimieren können!

Häufig gestellte Fragen

Ist die Lektion „CI/CD für Monorepos“ kostenlos?

Ja — der vollständige Text von „CI/CD für Monorepos“ 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 „CI/CD für Monorepos“?

Erkunden Sie Strategien zur Optimierung von CI/CD-Pipelines in Monorepos, einschließlich der selektiven Ausführung von Jobs auf Grundlage geänderter Dateien. 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 1 von 4.

Wie lange dauert die Lektion „CI/CD für Monorepos“?

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