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.

  1. Repositório no GitHub
  2. Uma api ou aplicação em .net core. Para o nosso exemplo criarei uma API simples
  3. 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.

conditions
conditions (clique para ampliar)

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:

app_service_menu_publish_profile
app_service_menu_publish_profile (clique para ampliar)

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.

settings do gh
settings do gh (clique para ampliar)

Depois, no menu à esquerda, selecione a opção Secrets, conforme imagem.

menu secrets
menu secrets (clique para ampliar)

E aí vamos entrar com o nome e o valor na tela

gh_secret_az_service_principal
gh_secret_az_service_principal (clique para ampliar)

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: actions do repositorio

Depois veremos a seguinte tela

tela principal actions
tela principal actions (clique para ampliar)

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:

dotnetcore_publish_ok
dotnetcore_publish_ok (clique para ampliar)

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.

Postagens relacionadas