← Todos os artigos
Engenharia de Software

Como configurar pipelines de CI/CD no GitHub Actions para...

Guia passo a passo para usar GitHub Actions e Flyway na validação automática de migrações.

2 de leitura
Como configurar pipelines de CI/CD no GitHub Actions para...
Foto por Yancy Min

Como configurar pipelines de CI/CD no GitHub Actions para validar migrações de banco de dados com Flyway

Visão geral

Este artigo apresenta um fluxo de trabalho evergreen para integrar a ferramenta de versionamento de esquemas Flyway em pipelines de CI/CD usando GitHub Actions. O objetivo é garantir que todas as migrações de banco de dados sejam validadas antes de serem aplicadas em ambientes de produção, reduzindo riscos de falhas de schema.

Pré-requisitos

  • Repositório Git hospedado no GitHub
  • Projeto contendo scripts de migração no diretório padrão sql/ ou db/migration/
  • Flyway configurado localmente (versão mínima recomendada: 9.x)
  • Credenciais de acesso ao banco de dados armazenadas como GitHub Secrets (DB_URL, DB_USER, DB_PASSWORD)

Estrutura típica do repositório

my-app/ ├─ src/ ├─ sql/ # arquivos *.sql de migrações │ ├─ V1__init.sql │ └─ V2__add_user_table.sql ├─ flyway.conf # configuração padrão do Flyway └─ .github/ └─ workflows/ └─ flyway.yml # pipeline que vamos criar

Passo a passo para criar o workflow

1. Criar o arquivo de workflow

No diretório .github/workflows/ adicione um arquivo chamado flyway.yml.

2. Definir gatilhos

Indicamos quando o workflow deve ser executado. Normalmente usamos push e pull_request na branch main (ou outra branch de produção).

yaml on: push: branches: [ main ] pull_request: branches: [ main ]

3. Declarar o job principal

Usaremos um único job chamado validate-migration, que roda em um runner Ubuntu.

yaml jobs: validate-migration: runs-on: ubuntu-latest

4. Etapas (steps) do job

a) Checkout do código

yaml steps: - name: Checkout repository uses: actions/checkout@v3

b) Configurar Java (necessário para o Flyway CLI)

yaml - name: Set up Java uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '17'

c) Instalar o Flyway CLI

yaml - name: Install Flyway run: | curl -L https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/9.22.1/flyway-commandline-9.22.1-linux-x64.tar.gz | tar xz sudo ln -s $(pwd)/flyway-9.22.1/flyway /usr/local/bin/flyway

d) Validar as migrações

yaml - name: Validate migrations env: FLYWAY_URL: ${{ secrets.DB_URL }} FLYWAY_USER: ${{ secrets.DB_USER }} FLYWAY_PASSWORD: ${{ secrets.DB_PASSWORD }}

Fique por dentro das novidades

Receba as principais notícias do DigitalTech por e-mail ou WhatsApp.

Você poderá cancelar a inscrição quando desejar.