0Pricing
SQL Academy · Lección

CI para cambios de esquema (GitHub Actions)

Ejecute migraciones, dbt build y el análisis de SQLFluff dentro de GitHub Actions en cada PR, con bases de datos efímeras.

CI para cambios de esquema (GitHub Actions) es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

¿Por qué usar CI para SQL?

Las migraciones manuales provocan interrupciones del servicio. CI detecta:

  • Una migración que no se puede aplicar
  • Una migración que rompe pruebas existentes
  • Derivas del esquema entre entornos
  • Regresiones en el lintado y las pruebas

Una canalización CI sólida para SQL

  1. Inicie un Postgres efímero (Docker o un servicio de GitHub Actions)
  2. Aplique todas las migraciones desde cero
  3. Aplique solo las migraciones nuevas en una copia del esquema de staging
  4. Ejecute dbt build, Flyway test o las pruebas de la aplicación
  5. Ejecute el lintado con SQLFluff
  6. Genere un informe de diferencias del esquema

GitHub Actions: servicio de Postgres

Inicie Postgres junto con el trabajo:

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

Paso de lintado

Ejecute el lintado de SQLFluff en un trabajo independiente:

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
      - run: pip install sqlfluff && sqlfluff lint models/

Compilación de dbt en CI

Para proyectos de dbt:

- name: dbt deps & build
  run: |
    pip install dbt-postgres
    dbt deps
    dbt build --profiles-dir profiles/ci

Diferencias del esquema

migra (o apgdiff, schemahero) muestra qué cambios introduce una migración:

pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PR

Estrategia de solo avance

Cree siempre migraciones nuevas; nunca edite las que ya se hayan aplicado. CI garantiza que la secuencia de migraciones se pueda aplicar desde cero.

Cambios de esquema compatibles con versiones anteriores

El esquema de cada PR debe seguir siendo compatible con la versión anterior de la aplicación, para que pueda desplegar la aplicación y la base de datos en cualquier orden. CI puede verificarlo ejecutando las pruebas de la aplicación ANTIGUA contra el esquema NUEVO.

Carga de datos de prueba

Un pequeño script de datos de prueba en CI permite ejecutar las pruebas con datos realistas:

- name: Seed
  run: psql $DATABASE_URL < seed/dev.sql

Tiempo de espera de bloqueos en las pruebas de migración

Establezca lock_timeout en las migraciones de CI para imitar el comportamiento de producción:

ALTER DATABASE postgres SET lock_timeout = '5s';

Aplicación en producción

Para las migraciones de producción, utilice un trabajo de ejecución única:

  • Un ejecutor de migraciones con reintentos
  • Notificaciones en caso de fallo
  • Un procedimiento de reversión documentado

Patrón de bases de datos por rama

Herramientas como Neon y las ramas de Supabase permiten crear una copia de producción para cada PR y ejecutar migraciones y pruebas de la aplicación contra una copia con datos reales.

Resumen

SQL debe formar parte de CI.

  • Inicie un servicio de PG efímero
  • Aplique las migraciones y ejecute dbt build
  • Ejecute el lintado con SQLFluff
  • Ejecute las pruebas de la aplicación contra el esquema migrado
  • Compare el esquema para revisarlo

Comprobación rápida

¿Cuál es la forma más sencilla de añadir una base de datos PostgreSQL a un trabajo de GitHub Actions?

Preguntas frecuentes

¿La lección «CI para cambios de esquema (GitHub Actions)» es gratis?

Sí — el texto completo de «CI para cambios de esquema (GitHub Actions)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «CI para cambios de esquema (GitHub Actions)»?

Ejecute migraciones, dbt build y el análisis de SQLFluff dentro de GitHub Actions en cada PR, con bases de datos efímeras. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «CI para cambios de esquema (GitHub Actions)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de DBT (Data Build Tool)
  2. SQLFluff y linting
  3. Pruebas de SQL: pruebas de dbt y Great Expectations
  4. CI para cambios de esquema (GitHub Actions)
← Volver a SQL Academy