PARTE 1 Construindo uma pipeline com o Github Actions
Anteriormente mostrei como podemos construir uma pipeline com Github Actions e até compartilhei uma simplificada para demonstrar o funcionamento. Agora vamos aprofundar um pouco mais e entender como podemos rodar uma instância do Docker com as actions para aumentar a cobertura dos nossos testes.
Antes de entender a implementação, vale a pergunta: porque ter um container nas actions? Não vou aprofundar sobre o uso de container, mas nesse caso, ele permite que implementamos um banco local, que será o nosso database para rodar os nossos testes integrados ou e2e, sem a necessidade de conexão com um banco remoto, além de podermos utilizar filas locais, como o RabbitMQ ou Kafka, por exemplo. Somente nesse ponto, já ganhamos performance para a execução dos nossos testes.
Agora podemos partir para a implementação. Primeiro precisamos criar um arquivo docker-compose.yml, que será onde colocaremos as instruções para montar nossa imagem. No nosso exemplo utilizaremos o Postgres como banco de dados. Para isso, no nosso arquivo, especificamos qual imagem iremos utilizar e já configuramos as variáveis de ambiente, como nome de usuário e senha para acesso ao banco.
Ainda na configuração do docker, finalizamos especificando o nome de uma rede local para utilizarmos.
version: "3.6"
services:
postgres:
image: postgres:11.7-alpine
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: admin
POSTGRES_PASSWORD: password
networks:
default:
external:
name: my-network
Feito essa configuração passamos ao nosso workflow para inserir as novas configurações na execução dos testes. Para isso, precisamos de três comandos do docker.
Essa sequência irá criar a rede local para a execução da nossa instância, posteriormente buildar nossa imagem do docker e por fim apenas exibir os dados da rede que está disponível. Pronto, dessa forma temos uma instância com banco de dados pronta para ser utilizada por nossa aplicação.
- name: Creating network
run: docker network create "microservice-network"
- name: Build docker-composer
run: docker-compose up -d
- name: Check running container
run: docker ps -a
Caso necessário, você pode executar migrations com dados de testes e povoar o banco com as informações para executar os seus testes e rodá-los em sua pipeline. Dessa forma, em menos de 5 minutos, temos um container pronto para nossa pipeline.
Top comments (0)