CI per le modifiche allo schema (GitHub Actions)
Esegua migrazioni, dbt build e lint SQLFluff all’interno di GitHub Actions a ogni PR, utilizzando database effimeri.
CI per le modifiche allo schema (GitHub Actions) è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Perché usare CI per SQL?
Le migrazioni manuali causano interruzioni del servizio. CI individua:
- Una migrazione che non viene applicata
- Una migrazione che interrompe test esistenti
- La deriva dello schema tra gli ambienti
- Le regressioni rilevate da lint e test
Una pipeline CI SQL solida
- Avvii un'istanza PostgreSQL effimera (servizio Docker / GitHub Actions)
- Applichi tutte le migrazioni partendo da zero
- Applichi solo le nuove migrazioni a una copia dello schema di staging
- Esegua dbt build / Flyway test / i test dell'applicazione
- Esegua il lint con SQLFluff
- Generi un report delle differenze dello schema
GitHub Actions: servizio PostgreSQL
Avvii PostgreSQL insieme al job:
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.shPassaggio di lint
Esegua il lint di SQLFluff in un job separato:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install sqlfluff && sqlfluff lint models/Build di dbt in CI
Per i progetti dbt:
- name: dbt deps & build
run: |
pip install dbt-postgres
dbt deps
dbt build --profiles-dir profiles/ciDifferenze dello schema
migra (oppure apgdiff, schemahero) mostra le modifiche introdotte da una migrazione:
pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PRStrategia forward-only
Crei sempre nuove migrazioni e non modifichi mai quelle già applicate. CI verifica che la sequenza delle migrazioni possa essere applicata partendo da zero.
Modifiche dello schema retrocompatibili
Lo schema di ogni PR dovrebbe rimanere compatibile con la versione precedente dell'applicazione, così può eseguire il deployment dell'applicazione e del database in qualsiasi ordine. CI può verificarlo eseguendo i test della VECCHIA applicazione sul NUOVO schema.
Seed dei dati di test
Un piccolo script per caricare dati fixture in CI permette di eseguire i test su dati realistici:
- name: Seed
run: psql $DATABASE_URL < seed/dev.sqlTimeout dei lock nei test delle migrazioni
Imposti lock_timeout nelle migrazioni CI per riprodurre il comportamento in produzione:
ALTER DATABASE postgres SET lock_timeout = '5s';Applicazione in produzione
Per le migrazioni in produzione, utilizzi un job eseguito una sola volta:
- Migration runner con retry
- Notifiche in caso di errore
- Procedura di rollback documentata
Pattern del database per branch
Strumenti come Neon e il branching di Supabase permettono di creare una copia della produzione per ogni PR e di eseguire migrazioni e test dell'applicazione su una copia con dati reali.
Riepilogo
SQL appartiene a CI.
- Avvii un servizio PG effimero
- Applichi le migrazioni ed esegua dbt build
- Esegua il lint con SQLFluff
- Esegua i test dell'applicazione sullo schema migrato
- Confronti lo schema per la revisione
Verifica rapida
Qual è il modo più semplice per aggiungere un database PostgreSQL a un job GitHub Actions?
Domande Frequenti
La lezione «CI per le modifiche allo schema (GitHub Actions)» è gratuita?
Sì — il testo completo di «CI per le modifiche allo schema (GitHub Actions)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «CI per le modifiche allo schema (GitHub Actions)»?
Esegua migrazioni, dbt build e lint SQLFluff all’interno di GitHub Actions a ogni PR, utilizzando database effimeri. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «CI per le modifiche allo schema (GitHub Actions)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Fondamenti di DBT (Data Build Tool)
- SQLFluff e linting
- Test dell’SQL: test dbt e Great Expectations
- CI per le modifiche allo schema (GitHub Actions)