0Pricing
SQL Academy · Lektion

CI für Schemaänderungen (GitHub Actions)

Führen Sie Migrationen, dbt build und SQLFluff-Linting bei jedem PR in GitHub Actions mit temporären Datenbanken aus.

CI für Schemaänderungen (GitHub Actions) ist eine kostenlose SQL Academy-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 SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum CI für SQL?

Manuelle Migrationen verursachen Ausfälle. CI erkennt:

  • Migrationen, die sich nicht anwenden lassen
  • Migrationen, die bestehende Tests beschädigen
  • Schema-Drift zwischen Umgebungen
  • Regressionen bei Linting und Tests

Eine solide SQL-CI-Pipeline

  1. Ephemeres Postgres starten (Docker / GitHub-Actions-Dienst)
  2. Alle Migrationen von Grund auf anwenden
  3. Nur die neuen Migrationen auf eine Kopie des Staging-Schemas anwenden
  4. dbt build / Flyway test / Anwendungstests ausführen
  5. SQLFluff-Linting ausführen
  6. Bericht zum Schema-Vergleich erstellen

GitHub Actions: Postgres-Dienst

Postgres zusammen mit dem Job starten:

name: ci
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      pg:
        image: postgres:16
        env:
          POSTGRES_PASSWORD: postgres
        ports: ['5432:5432']
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
      - uses: actions/checkout@v4
      - name: Run migrations
        env:
          DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres
        run: |
          ./scripts/migrate.sh

Linting-Schritt

SQLFluff-Linting als separaten Job ausführen:

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
      - run: pip install sqlfluff && sqlfluff lint models/

dbt-Build in CI

Für dbt-Projekte:

- name: dbt deps & build
  run: |
    pip install dbt-postgres
    dbt deps
    dbt build --profiles-dir profiles/ci

Schema-Vergleich

migra (oder apgdiff, schemahero) zeigt, welche Änderungen eine Migration einführt:

pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PR

Vorwärtsgerichtete Strategie

Erstellen Sie immer neue Migrationen und bearbeiten Sie niemals bereits angewendete. Die CI stellt sicher, dass die Migrationsfolge von Grund auf angewendet werden kann.

Abwärtskompatible Schemaänderungen

Das Schema jedes PRs sollte mit der vorherigen Version der Anwendung kompatibel bleiben, damit Sie Anwendung und Datenbank in beliebiger Reihenfolge bereitstellen können. CI kann dies überprüfen, indem die Tests der ALTEN Anwendung gegen das NEUE Schema ausgeführt werden.

Testdaten-Seed

Ein kleines Fixture-Skript in CI ermöglicht Tests mit realistischen Daten:

- name: Seed
  run: psql $DATABASE_URL < seed/dev.sql

Sperrzeitüberschreitungen in Migrationstests

Setzen Sie lock_timeout in CI-Migrationen, um das Verhalten in der Produktion nachzuahmen:

ALTER DATABASE postgres SET lock_timeout = '5s';

Anwendung in der Produktion

Verwenden Sie für Produktionsmigrationen einen einmaligen Job:

  • Migration-Runner mit Wiederholungsversuchen
  • Benachrichtigungen bei Fehlern
  • Dokumentiertes Rollback-Verfahren

Datenbank-Branching-Muster

Mit Tools wie Neon und Supabase Branching können Sie für jeden PR eine Kopie der Produktionsdatenbank erstellen und Migrationen sowie Anwendungstests gegen eine Kopie mit echten Daten ausführen.

Zusammenfassung

SQL gehört in die CI.

  • Ephemeren PG-Dienst starten
  • Migrationen und dbt build ausführen
  • Mit SQLFluff linten
  • Anwendungstests gegen das migrierte Schema ausführen
  • Schema für die Überprüfung vergleichen

Schnelltest

Wie lässt sich einer GitHub-Actions-Aufgabe am einfachsten eine Postgres-Datenbank hinzufügen?

Häufig gestellte Fragen

Ist die Lektion „CI für Schemaänderungen (GitHub Actions)“ kostenlos?

Ja — der vollständige Text von „CI für Schemaänderungen (GitHub Actions)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CI für Schemaänderungen (GitHub Actions)“?

Führen Sie Migrationen, dbt build und SQLFluff-Linting bei jedem PR in GitHub Actions mit temporären Datenbanken aus. Du übst SQL Academy 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 SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy 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 „CI für Schemaänderungen (GitHub Actions)“?

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 SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-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. Grundlagen von DBT (Data Build Tool)
  2. SQLFluff und Linting
  3. SQL testen: dbt-Tests, Great Expectations
  4. CI für Schemaänderungen (GitHub Actions)
← Zurück zu SQL Academy