CI pour les modifications de schéma (GitHub Actions)
Exécutez les migrations, dbt build et l’analyse SQLFluff dans GitHub Actions à chaque PR, avec des bases de données éphémères.
CI pour les modifications de schéma (GitHub Actions) est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Pourquoi la CI pour SQL ?
Les migrations manuelles provoquent des interruptions de service. La CI détecte :
- une migration qui ne peut pas être appliquée
- une migration qui casse les tests existants
- la dérive du schéma entre les environnements
- les régressions de l'analyse statique et des tests
Une solide chaîne CI pour SQL
- Démarrer un PostgreSQL éphémère (service Docker / GitHub Actions)
- Appliquer toutes les migrations depuis zéro
- Appliquer uniquement les nouvelles migrations sur une copie du schéma de préproduction
- Exécuter dbt build / Flyway test / les tests de l'application
- Effectuer l'analyse statique avec SQLFluff
- Générer un rapport de différences du schéma
Actions GitHub : service PostgreSQL
Démarrez PostgreSQL conjointement à la tâche :
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Étape d'analyse statique
Effectuez l'analyse statique avec SQLFluff dans une tâche distincte :
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install sqlfluff && sqlfluff lint models/Compilation de dbt dans la CI
Pour les projets dbt :
- name: dbt deps & build
run: |
pip install dbt-postgres
dbt deps
dbt build --profiles-dir profiles/ciDifférences de schéma
migra (ou apgdiff, schemahero) affiche les modifications introduites par une migration :
pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PRStratégie vers l'avant uniquement
Créez toujours de nouvelles migrations ; ne modifiez jamais celles qui ont déjà été appliquées. La CI vérifie que la suite de migrations s'applique depuis zéro.
Modifications de schéma rétrocompatibles
Le schéma de chaque PR doit rester compatible avec la version précédente de l'application, afin que vous puissiez déployer l'application et la base de données dans n'importe quel ordre. La CI peut le vérifier en exécutant les tests de l'application OLD sur le schéma NEW.
Initialisation des données de test
Un petit script de données de test dans la CI permet d'exécuter les tests sur des données réalistes :
- name: Seed
run: psql $DATABASE_URL < seed/dev.sqlDélais d'expiration des verrous dans les tests de migration
Définissez lock_timeout dans les migrations de la CI afin de reproduire le comportement de la production :
ALTER DATABASE postgres SET lock_timeout = '5s';Application en production
Pour les migrations en production, utilisez une tâche ponctuelle :
- un exécuteur de migrations avec des nouvelles tentatives
- des notifications en cas d'échec
- une procédure de restauration documentée
Schéma de base de données par branche
Des outils comme Neon et les branches Supabase vous permettent de créer une copie de la production pour chaque PR — et d'exécuter les migrations et les tests de l'application sur une copie contenant les données réelles.
Récapitulatif
SQL doit faire partie de la CI.
- démarrez un service PG éphémère
- appliquez les migrations et exécutez dbt build
- effectuez l'analyse statique avec SQLFluff
- exécutez les tests de l'application sur le schéma migré
- comparez les schémas pour la revue
Vérification rapide
Quelle est la manière la plus simple d'ajouter une base de données PostgreSQL à une tâche GitHub Actions ?
Apprends SQL avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 46
- Leçons
- 183
Questions Fréquemment Posées
La leçon « CI pour les modifications de schéma (GitHub Actions) » est-elle gratuite ?
Oui — le texte complet de « CI pour les modifications de schéma (GitHub Actions) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « CI pour les modifications de schéma (GitHub Actions) » ?
Exécutez les migrations, dbt build et l’analyse SQLFluff dans GitHub Actions à chaque PR, avec des bases de données éphémères. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « CI pour les modifications de schéma (GitHub Actions) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fondamentaux de DBT (Data Build Tool)
- SQLFluff et analyse de style
- Tester le SQL : tests dbt et Great Expectations
- CI pour les modifications de schéma (GitHub Actions)