SQL Academy · Leçon

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.

Leçon 4 sur 414 étapes

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

  1. Démarrer un PostgreSQL éphémère (service Docker / GitHub Actions)
  2. Appliquer toutes les migrations depuis zéro
  3. Appliquer uniquement les nouvelles migrations sur une copie du schéma de préproduction
  4. Exécuter dbt build / Flyway test / les tests de l'application
  5. Effectuer l'analyse statique avec SQLFluff
  6. 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/ci

Diffé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 PR

Straté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.sql

Dé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 ?

Gratuit pour commencer

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

  1. Fondamentaux de DBT (Data Build Tool)
  2. SQLFluff et analyse de style
  3. Tester le SQL : tests dbt et Great Expectations
  4. CI pour les modifications de schéma (GitHub Actions)
← Retour à SQL Academy