Criando um pipeline de CI/CD usando GitHub Actions
Nesse post vou demonstrar como criar uma aplicação DotNet core, versionar no GitHub, criar um workflow usando Actions e realizar deploy no Azure.
Para acompanhar esse tutorial, você vai precisar de:
- Visual Studio Code - Pode ser baixado aqui
- DotNet Core SDK - Pode ser baixado aqui
- Uma conta no GitHub
- Uma conta no Azure
Todos os comandos realizados localmente estão no arquivo abaixo, mas irei explica-los um a um no decorrer do post
Criando a aplicação
Após cumpridos os pré reqs, abra o VS Code, vá em Open folder e selecione uma pasta vazia para criarmos o projeto:

Agora vá no menu superior vá em **Terminal **-> **New Terminal **ou pressione ctrl + ‘,isso irá abrir um terminal na parte inferior da tela. Para verificar a versão do sdk instalada clique nele e digite:
dotnet –versionNo meu caso estou utilizando a versão 3.1.201, caso tenha algum problema durante a execução do tutorial e esteja utilizando uma versão diferente, utilizar essa versão pode te ajudar.

Agora para criarmos o projeto digite
dotnet new webappEsse comando irá criar a estrutura da nossa aplicação que nada mais é que um site web baseado em MVC:

Repare que serão criados alguns arquivos na pasta que selecionamos no início. Eles podem ser vistos no menu Explorer ao lado esquerdo da tela

Para verificar se tudo está ok com a aplicação, digite no terminal
dotnet runIsso irá compilar e iniciar a aplicação. Aqui também pode ser verificado em qual porta está rodando e acessar para testar


Agora que temos uma aplicação rodando, podemos seguir para a etapa de versionamento.
Para mais informações sobre comandos do dotnet core veja o conteúdo deste link https://docs.microsoft.com/pt-br/dotnet/core/tools/
Adicionando ao GitHub / controle de versão
Antes de enviar nosso código ao GitHub, primeiro precisamos versionar localmente. Antes de realizar esse versionamento, vamos criar um arquivo chamado .gitignore, onde iremos informar ao git, quais arquivos não queremos que sejam enviados, como binários por exemplo. O próprio dotnet Core possui um template pronto, onde automaticamente são adicionados os arquivos que não queremos versionar. No terminal digite:
dotnet new gitignore


- Inicializando nosso repositório e adicionando todos os nossos arquivos para a área de staging.
git init
ash git add . git status

Realizando commit das alterações
git commit -m “commit inicial”
Até agora todas as operações que realizamos foram locais. Para enviarmos o código para o GitHub, primeiro precisamos criar um repositório. Acesse sua conta no GitHub e siga os passos abaixo:


Como já temos um repositório criado, copie o código da opção abaixo, cole e execute no terminal:

git remote add origin https://github.com/wesleycamargo/Pipeline-CICD.git git push -u origin master
Ao atualizar a página do repositório nosso código já estará lá

Criando Action de CI
Na tela anterior clique em Actions, o GitHub deverá identificar que o código da aplicação foi escrito em .NET Core e irá sugerir um template de workflow. Pode selecioná-lo:

Na tela seguinte será apresentado um arquivo .yml. Nesse momento vamos mante-lo assim, realizando o commit na branch master:


Será criada uma pasta .github/workflows no seu repositório, nela será adicionado um arquivo com o conteúdo abaixo:
Agora você será redirecionado para a parte de código. Clique novamente em Actions e você irá notar que foi criado um workflow e ele já foi iniciado automaticamente. Clique no evento que foi acionado e no build conforme as imagens:


Observe que é possível visualizar o log da execução do build.
Já temos um build realizando a Continuous Integration(CI) de nossa aplicação.
Adicionando Azure Web App Publish Profile ao GitHub
Vá a um Web App já existente no portal do Azure e clique em Get publish profile.

Será realizado o download de um arquivo com a extensão .PublishSettings. Copie o conteúdo dele.
No GitHub, vá às configurações para adicionar como Secret:

Nomeie como AZURE_WEBAPP_PUBLISH_PROFILE e em value adicione o conteúdo do arquivo .PublishSettings

Publicando a aplicação no Azure
Para configurar o Continuous Delivery(CD) vamos realizar algumas alterações no arquivo yml. Eu acho um pouco difícil editar pela página web, então vou realizar um pull do meu repositório local e editar no VS Code, mas você pode fazer onde for melhor para você =).
Primeiro vamos substituir o código anterior por um código mais enxuto e com uma nova função: *publish. *Vamos adicionar também uma task para realizar o upload dos artefatos gerados:
Aqui também adicionamos variáveis de ambiente para nossa aplicação. Altere os valores de WebApp_Name e DotNet_Version para os valores de acordo com seu ambiente:
env: AZURE_WEBAPP_NAME: webAppAction-wes AZURE_WEBAPP_PACKAGE_PATH: ‘.’ DOTNET_VERSION: ‘3.1.201’Com a task para realizar o upload dos artefatos, podemos notar que após executar o build podemos baixá-los:

Ao final sua aplicação estará publicada em seu WebApp:

Vou deixar aqui o link do repositório caso queiram visualizar: https://github.com/wesleycamargo/Pipeline-CICD
Valeu!