Série Continuous Integration: Automatizando banco de dados com Flyway plugin
No artigo de hoje vamos ver como automatizar a criação do banco de dados usando o Jenkins + o plugin Flyway via Maven.
Olá, pessoal!
No artigo de hoje vamos ver como automatizar a criação do banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data → usando o Jenkins + o plugin Flyway via Maven. Aqui na ITS usamos Continuous Integration e Continuous Delivery em todos os projetos; respiramos isso. Não apenas por ser algo “bacana tecnicamente”, mas pelo valor que é entregue aos projetos e para empresa também.
Cenário
E aí, quantas vezes você já teve que falar: “ah, agora vai para o ambiente de dev e tenho que gerar toda base de dados, e vou levar pelo menos 30 minutos”. Pois é, aqui já tivemos esse cenário enquanto estávamos validando qual ferramenta íamos usar e, para não sair usando qualquer coisa, o ideal era fazer manualmente, mesmo consumindo média de 30 minutos para ter todo banco pronto antes de fazer o deploy da aplicação no ambiente de DEV. E se uma tabela sofre alteração? E se preciso replicar a mesma tabela em outro ambiente? Quanto tempo levaria? Acho que já percebeu o problema aqui, certo?
Pensando em resolver esse débito técnico, conhecemos o Flyway. Na verdade já falei dele em outro artigo, mas agora vamos integrá-lo com o Jenkins, que nos permite ter um job que vai executar apenas a criação das tabelas.
Vou me limitar apenas em configurar o Flyway no Jenkins e eu assumi que você já tem ele configurado no pom.xml do seu projeto. Caso não tenha feito isso, confira o artigo que falei em específico sobre como usar o plugin.
Requisito
Antes de mais nada, crie um arquivo .sql que crie uma simples tabela no banco de dados, e nas configurações do pom.xml garanta que o usuário tem as devidas permissões. O arquivo .sql deve estar na estrutura esperada pelo Flyway.
Passo 1
Crie um novo job no Jenkins, dê um nome a ele e escolha Build a maven2/3 project:
Passo 2
Agora precisamos informar a URL do repositório do projeto (no meu caso, está no github):
Informamos a branch, que pode ser deixado em branco e será considerado a master.
Não é requerido que seu projeto use o Git. Pode ser SVN ou qualquer outro controlador de versão, desde que você informe o repositório do projeto.
Passo 3
Em pré-step, vamos executar um clean e compile e por fim, vamos exibir o status de execução do Flyway, ou seja, saber qual script será executado. Lembre que o compile é requerido pelo Flyway.
Passo 4
Agora em build deixe assim:
É, esse cara que faz a mágica de criar as tabelas, ou seja, ele vai executar o(s) arquivo(s) .sql.
Passo 5
É isso! Agora vamos buildar o projeto e esperar que a tabela seja criada (acompanhe pelo console). Outro ponto importante é garantir que o banco de dados está rodando. Parece óbvio, mas nada impede de esquecermos de iniciar o DB. Salve as alterações e clique em build now.
Resultado
Olhando o console, vamos ver o seguinte (claro que será diferente do seu):
No meu caso, já tinha outros .sql executados, mas na última linha observe que está marcado como future, ou seja, que será executado. Esse é o resultado do comando que colocamos no pré-step, e como deu tudo certo aqui, vamos ver o resultado do build.
Agora, acesse seu banco de dados e o esperado é que a tabela tenha sido criada. Analise o tempo que levou para execução do script. Quando trabalhamos com projetos pequenos parece que ter esse trabalho de configurar e criar uma build para esse fim é como se fosse inútil; afinal, manualmente seria mais rápido, porém, pode acreditar o investimento feito no tempo de setup e configuração é muito menor que os problemas que passamos quando fazemos criação de base de dados manualmente.
Simples, não? Espero que tenham gostado do artigo.
Abraços!














Airton Lira Junior
Luiz Fernando Duarte Junior
Alex Hinckel
Cezar Taurion





