SQL Academy · leksjon

CI for skjem endringer (GitHub Actions)

Kjør migreringer, dbt build og SQLFluff-linting i GitHub Actions ved hver PR, med midlertidige databaser.

Leksjon 4 av 414 trinn

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

  1. Start en midlertidig Postgres-instans (Docker / GitHub Actions-tjeneste)
  2. Kjør alle migreringer fra grunnen av
  3. Kjør bare de nye migreringene på en kopi av staging-skjemaet
  4. Kjør dbt build / Flyway-test / apptester
  5. Kjør SQLFluff-linting
  6. 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.sh

Linting-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/ci

Skjemaforskjell

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 PR

Strategi 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.sql

Tidsavbrudd 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?

Gratis å komme i gang

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

  1. Grunnleggende om DBT (Data Build Tool)
  2. SQLFluff og linting
  3. Testing av SQL: dbt-tester og Great Expectations
  4. CI for skjem endringer (GitHub Actions)
← Tilbake til SQL Academy