CI for skjem endringer (GitHub Actions)
Kjør migreringer, dbt build og SQLFluff-linting i GitHub Actions ved hver PR, med midlertidige databaser.
CI for skjem endringer (GitHub Actions) er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hvorfor CI for SQL?
Manuelle migreringer kan føre til driftsavbrudd. CI oppdager:
- Migreringer som ikke kan kjøres
- Migreringer som bryter eksisterende tester
- Skjemadivergens mellom miljøer
- Regresjoner i linting og tester
En solid SQL-CI-pipeline
- Start en midlertidig Postgres-instans (Docker / GitHub Actions-tjeneste)
- Kjør alle migreringer fra grunnen av
- Kjør bare de nye migreringene på en kopi av staging-skjemaet
- Kjør dbt build / Flyway-test / apptester
- Kjør SQLFluff-linting
- Lag en rapport over skjemaforskjeller
GitHub Actions: Postgres-tjeneste
Start Postgres sammen med jobben:
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-trinn
Kjør SQLFluff-linting som en separat jobb:
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 i CI
For dbt-prosjekter:
- name: dbt deps & build
run: |
pip install dbt-postgres
dbt deps
dbt build --profiles-dir profiles/ciSkjemaforskjell
migra (eller apgdiff, schemahero) viser hvilke endringer en migrering introduserer:
pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PRStrategi med bare fremovermigreringer
Opprett alltid nye migreringer; rediger aldri migreringer som allerede er kjørt. CI sikrer at migreringssekvensen kan kjøres fra grunnen av.
Bakoverkompatible skjemaendringer
Skjemaet i hver PR bør fortsatt være kompatibelt med den forrige appversjonen, slik at appen og databasen kan distribueres i hvilken som helst rekkefølge. CI kan kontrollere dette ved å kjøre tester for OLD-appen mot NEW-skjemaet.
Fylling av testdata
Et lite fixture-skript i CI gjør at tester kan kjøres mot realistiske data:
- name: Seed
run: psql $DATABASE_URL < seed/dev.sqlTidsavbrudd for låser i migreringstester
Angi lock_timeout i CI-migreringer for å etterligne oppførselen i produksjon:
ALTER DATABASE postgres SET lock_timeout = '5s';Kjøre migreringer i produksjon
Bruk en engangsjobb for produksjonsmigreringer:
- Migreringskjører med nye forsøk
- Varsler ved feil
- Dokumentert prosedyre for tilbakerulling
Mønster for databasegrener
Verktøy som Neon og Supabase branching lar deg opprette en kopi av produksjonen for hver PR – kjør migreringer og apptester mot en kopi med reelle data.
Oppsummering
SQL hører hjemme i CI.
- Start en midlertidig PG-tjeneste
- Kjør migreringer og dbt build
- Kjør linting med SQLFluff
- Kjør apptester mot det migrerte skjemaet
- Sammenlign skjemaet som del av gjennomgangen
Kort kontroll
Hva er den enkleste måten å legge til en Postgres-database i en GitHub Actions-jobb?
Lær deg SQL med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 46
- Leksjoner
- 183
Ofte stilte spørsmål
Er leksjonen «CI for skjem endringer (GitHub Actions)» gratis?
Ja – hele teksten i «CI for skjem endringer (GitHub Actions)» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «CI for skjem endringer (GitHub Actions)»?
Kjør migreringer, dbt build og SQLFluff-linting i GitHub Actions ved hver PR, med midlertidige databaser. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med SQL Academy?
Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «CI for skjem endringer (GitHub Actions)»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?
Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Grunnleggende om DBT (Data Build Tool)
- SQLFluff og linting
- Testing av SQL: dbt-tester og Great Expectations
- CI for skjem endringer (GitHub Actions)