Implementando seu primeiro fluxo com o Github Actions
No último post - O que é o GitHub Actions? - eu apresentei em linhas gerais o que era o GitHub Actions e benefícios dele. Nesse post nós iremos montar nosso primeiro fluxo de CI (Continuous Integration) e CD (Continuous Deployment) usando o GitHub Actions.
Nele iremos fazer o deploy de uma aplicação .net core em um Web App no Azure utilizando todo o fluxo na plataforma do GitHub.
Vamos ver como implementar?
O que precisaremos para esse post?
O foco do post é o GitHub Actions, então não entrei em detalhes em como criar alguns itens que você jé deve ter criado, passando apenas os comandos necessários ou indicando pontualmente como fazer.
- Repositório no GitHub
- Uma api ou aplicação em .net core. Para o nosso exemplo criarei uma API simples
- Uma Web App no Azure que vai rodar nossa aplicação.
1. Repositório.
Para termos esse primeiro item basta termos uma conta no github e depois disso podemos criar nosso repositório, tanto pela interface web ou pela linha de comando. Vamos fazer pela linha de comando.
Para a instalação do command line, siga os passos descritos nessa documentação do próprio GitHub. Com isso nós instalaremos o CLI do GitHub e através deles podemos criar repositórios, pull request e fazer várias outras ações.
Feito isso, crie um diretório para o seu novo repositório e digite:
1
gh repo create dotnetcore-gha -d "repositório de teste para o github actions" --public
Fazendo isso, você será redirecionado para uma página web para fazer o login na sua conta.
Com isso seu repositório será criado.
2. Api em dotnet core
Dentro do repositório que você acabou de criar, digite o seguinte comando para criarmos a nossa API:
1
dotnet new webapi
Agora vamos faça o commit e o push do seu projeto para o repositório.
3. WebApp no Azure
Você já deve ter criado a sua WebApp no Azure. Nesse tutorial não vamos entrar em detalhes em como criar, mas você pode utilizar o portal do azure para criar de forma fácil a sua web app.
Criando nosso primeiro workflow
Com a base toda criada vamos criar nosso workflow e para isso precisaremos ter uma secret que conterá informações de como o GitHub irá se conectar com o Azure e o nosso próprio workflow.
Criando a secret - talvez pegar o publish profile
Primeiro vamos pegar o arquivo do publish profile do nosso web app. Para isso navegue até a página principal do seu web app e você verá uma tela parecida com a seguir:
Feito isso, clique no Get publish profile e um download será iniciado.
Agora precisaremos criar uma secret que vai conter nossas credenciais (publish profile) do Azure. Para isso vamos na parte de Settings do GitHub para criar nossa secret.
Depois, no menu à esquerda, selecione a opção Secrets, conforme imagem.
E aí vamos entrar com o nome e o valor na tela
Nela vamos colocar o nome como AZURE_WEBAPP_PUBLISH_PROFILE e o valor o conteúdo do arquivo que acabamos de fazer o deploy
Criando o nosso workflow.
Agora no nosso repositório, vamos no menu Actions conforme demonstrado na imagem:
Depois veremos a seguinte tela
Nela iremos selecionar a opção set up a workflow yourself
E depois iremos apagar o conteúdo e adicionar o seguinte código.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#Nome do Fluxo - Pode colocar o que melhor definir seu processo.
name: .NET Core
# aqui são os eventos que vão iniciar o nosso processo
# no caso vai ser quando alguém fize um push para master
# e quando tiver um pullreques para a master
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
#aqui estou definindo apenas variaveis para reutilizar
# em várias etapas do fluxo
env:
AZURE_WEBAPP_NAME: apitestegha
AZURE_WEBAPP_PACKAGE_PATH: '.'
#Aqui é onde começa. Vamos definir os Jobs do nosso sistema
jobs:
build: # Aqui é o nome do primeiro e unico job. Ele fará o processo de build e deploy
#Aqui estamos definindo em qual agente vai rodar a compilação e o deploy do sistema
# vai ser em um servidor ubuntu. Pode escolher entre Mac e Windows também
runs-on: ubuntu-latest
#agora vamos começar a definir realmente os passos que precisamos executar
steps:
#primeiro é o checkout do nosso repositório.
- uses: actions/checkout@v2
# Definir qual versão do .netcore vai ser utilizada para compilação
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.100
# aqui estamos fazendo o restore do sistema
- name: Install dependencies
run: dotnet restore
# Run dotnet compila e publica
- name: dotnet build & publish
run: |
dotnet build --configuration Release
dotnet publish -c Release -o '$/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v2
with:
app-name: $ # Variável que definimos no inicio do script
publish-profile: $ # Secret que criamos com a conexão do azure
package: '$/myapp'
Com isso teremos nosso build e deploy configurado. Agora basta salvar que o workflow será iniciado automaticamente e ao terminar, podemos entrar na execução e veremos a seguinte tela:
Espero que tenha gostado e se tiver alguma dúvida específica me manda um e-mail ou deixe nos comentários.
Até a próxima, Claudio Romão
07/07/2020 | Por Claudio Romão | Em Técnico | Tempo de leitura: 3 mins.