CURSO NOVO - BLAZOR SERVER

balta.io balta.io
  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Blog

Seja Premium
balta.io

  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Blog
  • Player
Seja Premium

Entre ou Cadastre-se

  • Home
  • Artigos
  • Deploy no Azure via GitHub Actions


Deploy no Azure via GitHub Actions

Neste artigo vamos aprender a criar e configurar aplicações no Azure integradas com GitHub Actions utilizando apenas linhas de comando.

Command Line Interface

Trabalhar pelo terminal, via linha de comandos, traz diversos benefícios, dentre eles a integração de forma simples e direta.

Em um mundo tão focado em DevOps é mais do que essencial saber todos os passos de uma publicação completa, seja da sua API ou pacote, então vamos mergulhar no CLI.

Publicar uma aplicação pelo portal do Azure, integrado ao GitHub Actions não é uma tarefa difícil, porém, fazer isto via linha de comando por exigir um esforço maior.

Como contrapartida, por serem comandos, podemos automatizar com muito mais facilidade, tornando o processo independente dos desenvolvedores(as) nas próximas execuções.

Instalações

Para realizar os passos a seguir você precisará instalar o CLI do Azure e GitHub, como mostrado nas documentações dos links abaixo:

  • Azure CLI
  • GitHub CLI

Ao término da instalação, você deve ter disponível no seu terminal os comando az e gh.

Azure CLI - Autenticando

O primeiro passo é se autenticar no Azure utilizando o comando az login. Este comando abrirá um browser para que você possa fazer um login seguro e em seguida podemos prosseguir.

az login

Azure CLI - Listando as Contas

É normal termos diversas contas no Azure, e você pode listá-las utilizando o comando az account list. Em adicional a flag -o table faz com que o retorno da função seja uma tabela e não um JSON.

az account list -o table

Para definir a conta que deseja utilizar basta executar o comando az account set, seguido pelo ID da subscription.

az account set --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx

Para exibir detalhes de uma conta podemos utilizar o comando az account show.

az account show

Azure CLI - Criando um Resource Group

O primeiro passo no Azure é criar um grupo de recursos, que funciona como uma espécie de rede e permite-nos agrupar aplicações, storages, bancos de dados, entre outros.

Para criar um grupo, utilizamos o comando az group create, definindo a localização do mesmo com o flag --location, que neste caso foi brazilsouth, seguido pelo nome do mesmo.

az group create --location brazilsouth --name blog 

Para listar os grupos podemos utilizar o comando az group list e para excluir um grupo o az group delete.

az group list
az group delete --name blog

Azure CLI - Criando um Storage

Para criar um storage podemos utilizar o comando az storage account. Neste caso o flag -h mostra detalhes da ajuda sobre o comando. Este flag pode ser utilizado por qualquer comando.

az storage account -h

Para listar as contas de armazenamento, podemos utilizar o comando az storage account list.

az storage account list

Agora vamos criar uma conta de armazenamento utilizando o comando az storage account create, como mostrado abaixo.

az storage account create --name blogstorage2812 --resource-group blog -l brazilsouth --sku Standard_LRS

Neste exemplo, utilizamos o SKU, que define a faixa de preço do serviço. Para mais detalhes sobre os SKUs, consulte este link.

Para exibir a string de conexão de uma conta de armazenamento, utilizamos o comando show-connection-string.

az storage account show-connection-string --name blogstorage2812 --resource-group blog

Azure CLI - Criando um Service Plan

Para criar uma aplicação, precisamos de um plano de cobranças antes, e isto é definido no comando az appservice plan.

az appservice plan -h

Para criar um plano, podemos utilizar o az appservice plan create como mostrado abaixo.

az appservice plan create --name blogbalta2812 --resource-group blog --sku F1 --is-linux

Novamente utilizamos o SKU para definir a tier de preços e o flag --is-linux define que nosso ambiente será Linux.

SKUs disponíveis: B1, B2, B3, D1, F1, FREE, I1, I1v2, I2, I2v2, I3, I3v2, P1V2, P1V3, P2V2, P2V3, P3V2, P3V3, PC2, PC3, PC4, S1, S2, S3, SHARED, WS1, WS2, WS3

Azure CLI - Criando um WebApp

Os WebApps ficam no comando az webapp, e podemos listá-los utilizando o comando abaixo.

az webapp list -o table

Para criar um WebApp podemos definir seu Runtime (Java, .NET, PHP, Node...) e para saber quais runtimes disponíveis no seu ambiente você pode utilizar o comando abaixo.

az webapp list-runtimes

Finalmente, para criar o webapp podemos utilizar o comando abaixo.

az webapp create --name blogbalta2812webapp --plan blogbalta2812 --resource-group blog --runtime "DOTNETCORE:6.0"

Para abrir seu app no Browser, basta executar o comando abaixo:

az webapp browse -n blogbalta2812webapp --resource-group blog

GitHub CLI

O GitHub também possui um CLI que ao ser instalado disponibiliza o comando gh no terminal. Não devemos confundir com o CLI do GIT que disponibiliza o comando git no terminal.

GitHub CLI - Autenticando

Para se autenticar utilizando o GitHub CLI basta utilizar o comando abaixo:

gh auth login

GitHub CLI - Criando um Repositório

Para criar um repositório podemos utilizar o comando gh repo create, como mostrado abaixo. O flag --private torna o repositório privado.

gh repo create balta-blog-2812 --private

Azure CLI - Criando um Perfil de Publicação

Para publicar nossa aplicação via GitHub Actions, precisamos de um perfil de publicação no Azure, e isto pode ser feito através do comando abaixo.

az ad sp create-for-rbac --name blogbalta2812deploy --role contributor --scopes /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/blog/providers/Microsoft.Web/sites/blogbalta2812webapp --sdk-auth

Como resultado, temos um JSON que devemos salvar na sessão Secrets do repositório que criamos previamente no GitHub.

{
  "clientId": "00000000-0000-0000-0000-00000000000",
  "clientSecret": "SECRET",
  "subscriptionId": "00000000-0000-0000-0000-00000000000",
  "tenantId": "00000000-0000-0000-0000-00000000000",
  "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
  "resourceManagerEndpointUrl": "https://management.azure.com/",
  "activeDirectoryGraphResourceId": "https://graph.windows.net/",
  "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
  "galleryEndpointUrl": "https://gallery.azure.com/",
  "managementEndpointUrl": "https://management.core.windows.net/"
}

GitHub CLI - Secrets

Caso queira, você listar e salvar os Secrets via linha de comando também, mas como este segredo é um JSON, recomendo fazer pelo site. De qualquer forma aqui estão os comandos para fazer isto via CLI.

gh secret list
gh secret set AZURE_DEPLOY --body "JSON"

GitHub Actions - Workflows

Com tudo pronto, podemos criar um arquivo yml que será nosso worflow, neste caso é o .github/worflows/main.yml.

name: Build and deploy ASP.Net Core app to Azure Web App - balta-blog-2812

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up .NET Core
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '6.0.x'
          include-prerelease: true

      - name: Build with dotnet
        run: dotnet build --configuration Release

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: .net-app
          path: ${{env.DOTNET_ROOT}}/myapp
      
      - name: Azure Login
        uses: azure/login@v1.1
        with:
          creds: ${{ secrets.AZURE_DEPLOY }}

      - name: Deploy to Azure Web App
        uses: azure/webapps-deploy@v2
        with:
          app-name: "blogbalta2812webapp"
          slot-name: "production"
          package: ${{env.DOTNET_ROOT}}/myapp

Note que utilizamos o segredo armazenado, que neste caso chamei de secrets.AZURE_DEPLOY.

Azure CLI - Configurando o Deploy

Agora basta apontar ao Azure que estamos utilizando o deployment a partir de um repositório no GitHub.

az webapp deployment source config --name blogbalta2812webapp --resource-group blog --repo-url https://github.com/andrebaltieri/balta-blog-2812 --branch main

Azure CLI - SQL Server

Também podemos criar bancos de dados e diversos outros recursos no Azure via CLI, como mostrados abaixo:

az sql server list
az sql server create -l brazilsouth --resource-group blog --name blogbalta2812sqlserver -u blogsqlserveradmusr -p SUASENHA

Porém, recomendo fortemente que faça o SQL pelo portal por conta dos valores. Eles mudam com frequência e até onde percebi nem todas as opções estão disponíveis via CLI.

Conclusão

Publicar aplicações no Azure de forma automatizada com GitHub sem nem acessar o portal é plenamente possível, e desta forma você pode deixar tudo automatizado. Chega de sofrer com deploy!

Populares

Priority Queue

Priority Queue ou fila prioritária é um tipo de lista inclusa no C# 10 que permite que seus itens...


Implicit Operators no C#

Implicit Operators permitem adicionar comportamentos de conversão a objetos Built In ou complexos...


ASP.NET 5 – Autenticação e Autorização com Bearer e JWT

Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...


Clean Code - Guia e Exemplos

Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...


Git e GitHub - Instalação, Configuração e Primeiros Passos

Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...


Compartilhe este artigo



Conheça o autor

André Baltieri

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.





2.438

Aulas disponíveis

235

horas de conteúdo

53.092

Alunos matriculados

36.728

Certificados emitidos





Comece de graça agora mesmo!

Temos mais de 18 cursos totalmente de graça e todos com certificado de conclusão.

Começar


Prefere algo mais Premium?

Conheça nossos planos



Premium semestral

Compra única, parcelada em até
12x no cartão de crédito


12x R$

41

,48

=R$ 497,80
  • 6 meses de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 54 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade

Premium anual

Compra única, parcelada em até
12x no cartão de crédito


12x R$

70

,65

=R$ 847,80
  • 1 ano de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 54 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade



Precisa de ajuda?

Dúvidas frequentes



  • Posso começar de graça?

    Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.

  • Vou ter que pagar algo?

    Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com certificado de conclusão, você não paga nada por eles.

    Porém, caso queira algo mais Premium , você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.

  • Por onde devo começar?

    Siga SEMPRE as nossas Carreiras , elas vão te orientar em todos os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu aprendizado.
    Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.

    • Backend
    • Frontend
    • Mobile

  • Os cursos ensinam tudo que preciso?

    Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.

  • O que eu devo estudar?

    Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe o básico?"

    Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus objetivos primeiro.
    Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta para tomar esta decisão seria:

    • Já sei o básico
    • O Framework/Tecnologia tem mercado onde eu estou (região)
    • O Framework/Tecnologia é utilizado em uma empresa onde quero atual
    • O Framework/Tecnologia resolve meu problema
    • Eu gosto de utilizar o Framework/Tecnologia

  • Estou pronto para estudar no balta.io?

    Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!

    Começar de graça

Ainda tem dúvidas?





Assine nosso Newsletter

Receba em primeira mão todas as nossas novidades.

Cadastrar


balta.io

Sobre

  • Como funciona?
  • Seja Premium
  • Agenda
  • Blog
  • Todos os cursos

Cursos

  • Frontend
  • Backend
  • Mobile
  • Fullstack

Suporte

  • Termos de uso
  • Privacidade
  • Cancelamento
  • Central de ajuda

Redes Sociais

  • Telegram
  • Facebook
  • Instagram
  • YouTube
  • Twitch
  • LinkedIn
  • Discord