0Pricing
SQL Academy · Aula

CI para alterações de esquema (GitHub Actions)

Execute migrações, dbt build e a análise estática do SQLFluff dentro do GitHub Actions a cada PR, usando bancos de dados efêmeros.

CI para alterações de esquema (GitHub Actions) é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Por que usar CI para SQL?

Migrações manuais causam indisponibilidade. A CI detecta:

  • Migração que não pode ser aplicada
  • Migração que quebra testes existentes
  • Desvio do esquema entre ambientes
  • Regressões na verificação e nos testes

Um fluxo de CI sólido para SQL

  1. Inicie um Postgres efêmero (Docker / serviço do GitHub Actions)
  2. Aplique todas as migrações do zero
  3. Aplique apenas as novas migrações em uma cópia do esquema de homologação
  4. Execute a compilação do dbt / teste do Flyway / testes do aplicativo
  5. Faça a verificação com o SQLFluff
  6. Gere um relatório das diferenças do esquema

Serviço do Postgres no GitHub Actions

Inicie o Postgres junto com a tarefa:

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

Etapa de verificação

Execute a verificação do SQLFluff em uma tarefa separada:

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

Compilação do dbt na CI

Para projetos do dbt:

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

Diferenças do esquema

O migra (ou apgdiff, schemahero) mostra quais alterações uma migração introduz:

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

Estratégia somente para frente

Sempre crie novas migrações; nunca edite as que já foram aplicadas. A CI garante que a sequência de migrações seja aplicada do zero.

Alterações de esquema compatíveis com versões anteriores

O esquema de cada PR deve continuar compatível com a versão anterior do aplicativo, para que seja possível implantar o aplicativo e o banco de dados em qualquer ordem. A CI pode verificar isso executando os testes do aplicativo OLD contra o esquema NEW.

Carga inicial de dados de teste

Um pequeno script de dados de teste na CI permite que os testes sejam executados com dados realistas:

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

Tempos limite de bloqueios nos testes de migração

Defina o tempo limite de bloqueio nas migrações da CI para reproduzir o comportamento de produção:

ALTER DATABASE postgres SET lock_timeout = '5s';

Aplicação em produção

Para migrações de produção, use uma tarefa de execução única:

  • Executor de migrações com novas tentativas
  • Notificações em caso de falha
  • Procedimento de reversão documentado

Padrão de banco de dados por ramificação

Ferramentas como Neon e a criação de ramificações do Supabase permitem criar uma cópia da produção para cada PR — execute migrações e testes do aplicativo em uma cópia com dados reais.

Recapitulação

O SQL pertence à CI.

  • Inicie um serviço PG efêmero
  • Aplique as migrações + execute a compilação do dbt
  • Faça a verificação com o SQLFluff
  • Execute os testes do aplicativo com o esquema migrado
  • Compare o esquema para revisão

Verificação rápida

Qual é a maneira mais simples de adicionar um banco de dados Postgres a uma tarefa do GitHub Actions?

Perguntas Frequentes

A aula “CI para alterações de esquema (GitHub Actions)” é grátis?

Sim — o texto completo de “CI para alterações de esquema (GitHub Actions)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “CI para alterações de esquema (GitHub Actions)”?

Execute migrações, dbt build e a análise estática do SQLFluff dentro do GitHub Actions a cada PR, usando bancos de dados efêmeros. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “CI para alterações de esquema (GitHub Actions)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do DBT (Data Build Tool)
  2. SQLFluff e análise estática
  3. Testes de SQL: testes do dbt, Great Expectations
  4. CI para alterações de esquema (GitHub Actions)
← Voltar para SQL Academy