Flyway & Azure DevOps : Rodando Flyway Localmente
Tags: devops, azure, sql, database
Published: 2020-06-30 14:31:41

Instalamos o Flyway localmente e criamos o nosso banco de dados SQL Database no Azure. Agora, iremos rodar ele.


# Tópicos
* [Connection String](#chapter-0)
* [Criando nosso Primeiro Script](#chapter-1)
* [Migração](#chapter-2)

## Connection String <a name="chapter-0"></a>

E para isso, vamos ir no diretorio do flyway e abrir o arquivo *flyway.conf* dentro do diretorio *conf*. 

Precisamos retirar o comentário do parâmetro *flyway.url* e adicionar a nossa conexão. Podemos obter ela no portal do azure, indo no nosso servico do SQL Database e em *Settings / Connection String*.


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/vto9cau8wgdo01vivr1n.png)

E dentro de *Connection String*, vamos ir na aba *JDBC* e copiar a conexao disponivel.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ybfos6go7r0oil8raq2l.png)

Não precisamos colocar todo o conteúdo do JDBC, podemos adicionar ele apenas ate o nome do nosso *database*, ficando assim:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mk4029x5wn30l8culpy0.png)

O *flyway.user* e *flyway.user* tambem é opcional.

E podemos novamente rodar o comando flyway info. Ele pedirá nosso usuário e senha e mostrará essa mensagem: *No migrations found*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/axkzgcpvv9v9z2xlf2jh.png)

## Criando nosso Primeiro Script <a name="chapter-1"></a>

E vamos ir ate a pasta *sql*. E é nela que devemos adicionar os nossos scripts SQL.

Podemos renomear o arquivo existente por *V1__CreateTables.sql*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mes487b880xzoo8rvpc3.png)

E abrindo o arquivo, iremos incluir esse script.

```
/* Single line comment */
CREATE TABLE Customers (
CustomerId smallint identity(1,1),
Name nvarchar(255),
Priority tinyint
)
CREATE TABLE Sales (
TransactionId smallint identity(1,1),
CustomerId smallint,
[Net Amount] int,
Completed bit
)
GO
```

E como podemos ver, ele é bem simples. Irá criar 2 tabelas ....

E vamos rodar novamente o comando `flyway info`.

E veja, agora temos 1 script, pendente de migração.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8aw1iywu2c0cwrdgml5n.png)


## Migração <a name="chapter-2"></a>

E vamos executar a migração.
Faremos ela, com o comando `flyway migrate`.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/bq9vnn4dq48foztikhbj.png)

E podemos ver que ele migrou com sucesso.

Vamos agora ao Azure, acessando o *Query Editor* do nosso banco de dados SQL Database. Atualizando as *tables*, podemos ver que o script foi executado e criou as 2 tabelas.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2tia5tnsjdbuhomw7uqf.png)

Além disso, o Flyway criou a tabela *dbo.flyway_schema_history*. Ele usa esse tabela para manter o histórico de execucação dos Scripts. 


```SELECT TOP (1000) * FROM [dbo].[flyway_schema_history]```

Executando o comando acima, podemos ver dados quanto ao script executado, como a versão, o nome do script, quem executou e quando.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/m34jayfmwjdtku4gp0ek.png)

No próximo artigo dessa serie, iremos rodar o Flyway a partir do nosso pipeline de Deploy Continua usando o Azure DevOps.

:)