.NET 5: automatizando build, testes e deployment de APIs REST com GitHub Actions

Renato Groffe
3 min readJan 24, 2021

--

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):

https://bit.ly/anp-githubactions-desc-100-blog-groffe

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:

GitHub Actions + .NET 5 + ASP.NET Core + Tests + Azure CLI + Azure App Service + Artifacts + Jobs + Environment Variables + Secrets

Já o projeto que serviu de base para a elaboração deste workflow está no seguinte repositório do GitHub:

.NET 5 + xUnit + Fluent Assertions + HttpClient + Refit + API REST para conversão de temperaturas (em ASP.NET Core)

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:

GitHub Actions + Docker + .NET 5 + ASP.NET Core + REST API Tests + Azure Container Registry + Azure CLI + Azure App Service + Jobs + Variables + Secrets

Disponibilizei ainda no GitHub o projeto que serviu de base para a construção deste workflow:

.NET 5 + SpecFlow + xUnit + Fluent Assertions + Refit + API REST para cálculo de juros compostos (em ASP.NET Core + Dockerfile + Application Insights)

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):

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker