.NET 5: automatizando build, testes e deployment de APIs REST com GitHub Actions
Em um artigo anterior abordei a implementação de testes de APIs REST com .NET 5, fazendo uso para isto dos frameworks xUnit, Refit e Fluent Assertions:
Testes de APIs REST com .NET 5, xUnit, Refit e Fluent Assertions
Neste novo post retomo esse assunto, trazendo desta vez 2 exemplos de workflows do GitHub Actions para agora automatizar o build, os testes e o deployment de APIs REST construídas com ASP.NET Core (incluindo vídeos detalhando todos os ajustes necessários).
E aproveito este espaço para um convite…
Que tal participar do treinamento online pioneiro no Brasil sobre GitHub Actions e promovido pelo Azure na Prática, agora com aulas gravadas e sessões ao vivo para resolução de dúvidas?
Acompanhe com comodidade e a qualquer tempo os diversos módulos deste treinamento, em que serão cobertas boas práticas + estratégias de build/testes/deployment e o uso desta solução de automação com tecnologias como Docker, Kubernetes, Azure App Service, Azure Functions e outros serviços da nuvem Microsoft!
Acesse então o link a seguir para efetuar sua inscrição com um desconto especial de R$ 100,00 (inclui certificado e grupo para resolução de dúvidas durante e após o curso):
Workflow para publicação num ambiente de Homologação, execução de testes e deployment em Produção
O workflow a seguir é formado por 4 Jobs, com cada um representando os diferentes estágios da automação de build, testes e deployment de uma API REST construída com .NET 5 + ASP.NET Core:
- build-api: geração de um Artifact com a publicação da API a ser testada, com este resultado utilizado posteriormente em deployment-api-test-env e deployment-api-prod-env;
- deployment-api-test-env: publicação em um recurso do Azure App Service considerado como ambiente de Testes/Homologação, com isto envolvendo o uso do Artifact gerado no passo anterior;
- tests-api: execução de testes a partir do projeto baseado em .NET 5, xUnit, Refit e Fluent Assertions;
- deployment-api-prod-env: deployment apontando para o recurso do Azure App Service que corresponde ao ambiente de Produção, empregando nesta tarefa o Artifact com a publicação da API REST gerado em build-api.
O código deste workflow e os comandos para geração de permissões de acesso às Web Apps no Microsoft Azure foram disponibilizados no seguinte repositório do GitHub:
Já o projeto que serviu de base para a elaboração deste workflow está no seguinte repositório do GitHub:
Este exemplo foi apresentado em detalhes em uma live recente no Canal .NET, com a gravação estando disponível no YouTube:
Workflow para build de imagem Docker, criação de um container para validações, execução de testes e deployment em Produção
Este segundo workflow é formado por 2 Jobs:
- build-docker-tests-push-acr: no qual acontecerá o build da imagem Docker a ser validada (baseada em .NET 5 + ASP.NET Core), a criação de um container a partir disto, a execução dos testes em SpecFlow + .NET 5 empregando tal container e, caso não se encontrem falhas, a publicação da imagem em questão no Azure Container Registry;
- deployment-azwebapp: deployment no Azure App Service utilizando containers, através do uso da imagem criada em build-docker-tests-push-acr.
O código deste workflow e o comando de geração das permissões de acesso para o deployment da Web App no Microsoft Azure estão no seguinte repositório do GitHub:
Disponibilizei ainda no GitHub o projeto que serviu de base para a construção deste workflow:
Esse exemplo também foi demonstrado em detalhes em uma live na qual participei recentemente e que foi promovida pela Comunidade XP (disponível no YouTube):