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
- Ephemeres Postgres starten (Docker / GitHub-Actions-Dienst)
- Alle Migrationen von Grund auf anwenden
- Nur die neuen Migrationen auf eine Kopie des Staging-Schemas anwenden
- dbt build / Flyway test / Anwendungstests ausführen
- SQLFluff-Linting ausführen
- 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.shLinting-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/ciSchema-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 PRVorwä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.sqlSperrzeitü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
- Grundlagen von DBT (Data Build Tool)
- SQLFluff und Linting
- SQL testen: dbt-Tests, Great Expectations
- CI für Schemaänderungen (GitHub Actions)