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
- Inicie um Postgres efêmero (Docker / serviço do GitHub Actions)
- Aplique todas as migrações do zero
- Aplique apenas as novas migrações em uma cópia do esquema de homologação
- Execute a compilação do dbt / teste do Flyway / testes do aplicativo
- Faça a verificação com o SQLFluff
- 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.shEtapa 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/ciDiferenç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 PREstraté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.sqlTempos 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
- Fundamentos do DBT (Data Build Tool)
- SQLFluff e análise estática
- Testes de SQL: testes do dbt, Great Expectations
- CI para alterações de esquema (GitHub Actions)