Início Rápido: Criar um fluxo de trabalho do GitHub para publicar um aplicativo

Neste início rápido, você aprenderá a criar um fluxo de trabalho do GitHub para publicar seu aplicativo .NET. a partir do código-fonte. A publicação automática do aplicativo .NET do GitHub para um destino é chamada de CD (implantação contínua). Há muitos destinos possíveis para publicar um aplicativo. Neste início rápido, você publicará no Azure.

Pré-requisitos

  • Uma conta do GitHub.
  • Um repositório de código-fonte em .NET.
  • Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
  • Um aplicativo Web ASP.NET Core.
  • Um recurso do Serviço de Aplicativo do Azure.

Adicionar perfil de publicação

Para publicar o aplicativo no Azure, abra o portal do Azure para a instância do Serviço de Aplicativo do aplicativo. Na Visão geral do recurso, selecione Obter perfil de publicação e salve o arquivo *.PublishSetting localmente.

Azure Portal, App Service resource: Get publish profile

Aviso

O perfil de publicação contém informações confidenciais, como credenciais para acessar seu recurso do Serviço de Aplicativo do Azure. Essas informações devem ser sempre tratadas com muito cuidado.

No repositório do GitHub, navegue até Configurações e selecione Segredos no menu de navegação à esquerda. Selecione Novo segredo do repositório para adicionar um novo segredo.

GitHub / Settings / Secret: Add new repository secret

Insira AZURE_PUBLISH_PROFILE como o Nome e cole o conteúdo XML do perfil de publicação na área de texto Valor. Selecione Adicionar segredo. Para obter mais informações, confira Segredos criptografados.

Criar um arquivo do fluxo de trabalho

No repositório do GitHub, adicione um novo arquivo YAML ao diretório .github/workflows. Escolha um nome de arquivo significativo, algo que indique claramente o que o fluxo de trabalho se destina a fazer. Para obter mais informações, confira Arquivo do fluxo de trabalho.

Importante

O GitHub exige que os arquivos que compõem o fluxo de trabalho sejam colocados no diretório .github/workflows.

Os arquivos do fluxo de trabalho normalmente definem uma composição de uma ou mais ações do GitHub por meio do jobs.<job_id>/steps[*]. Para obter mais informações, confira Sintaxe de fluxo de trabalho do GitHub Actions.

Crie um novo arquivo chamado publish-app.yml, e copie e cole o seguinte conteúdo YML nele:

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

Na composição anterior do fluxo de trabalho:

  • O name: publish define o nome, "publicar" aparecerá nas notificações de status do fluxo de trabalho.

    name: publish
    
  • O nó on significa os eventos que disparam o fluxo de trabalho:

    on:
      push:
        branches: [ production ]
    
    • Disparado quando ocorre um push na ramificação production.
  • O nó env define variáveis de ambiente nomeadas (env var).

    env:
      AZURE_WEBAPP_NAME: DotNetWeb
      AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • A variável de ambiente AZURE_WEBAPP_NAME é atribuída ao valor DotNetWeb.
    • A variável de ambiente AZURE_WEBAPP_PACKAGE_PATH é atribuída ao valor '.'.
    • A variável de ambiente DOTNET_VERSION é atribuída ao valor '6.0.401'. A variável de ambiente é referenciada posteriormente para especificar a dotnet-version da ação do GitHub actions/setup-dotnet@v3.
  • O nó jobs compila as etapas para o fluxo de trabalho a ser realizado.

    jobs:
      publish:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • Há um único trabalho, chamado publish, que será executado na versão mais recente do Ubuntu.
    • A ação do GitHub actions/setup-dotnet@v3 é usada para configurar o SDK do .NET com a versão especificada da variável de ambiente DOTNET_VERSION.
    • O comando dotnet restore é chamado.
    • O comando dotnet build é chamado.
    • O comando dotnet publish é chamado.
    • O comando dotnet test é chamado.
    • A ação do GitHub azure/webapps-deploy@v2 implanta o aplicativo com os determinados publish-profile e package.
      • O publish-profile é atribuído do segredo do repositório AZURE_PUBLISH_PROFILE.

Criar uma notificação de status de fluxo de trabalho

É comum que os repositórios do GitHub tenham um arquivo README.md na raiz do diretório do repositório. Da mesma forma, é bom relatar o status mais recente para vários fluxos de trabalho. Todos os fluxos de trabalho podem gerar uma notificação de status, que são visualmente atraentes no arquivo README.md. Para adicionar a notificação de status ao fluxo de trabalho:

  1. No repositório do GitHub, selecione a opção de navegação Ações.

  2. Todos os fluxos de trabalho do repositório são exibidos no lado esquerdo. Selecione o fluxo de trabalho desejado e o botão de reticências (...).

    • O botão de reticências (...) expande as opções de menu para o fluxo de trabalho selecionado.
  3. Selecione a opção no menu Criar notificação de status.

    GitHub: Create status badge

  4. Selecione o botão Copiar Markdown da notificação de status.

    GitHub: Copy status badge Markdown

  5. Cole o Markdown no arquivo README.md, salve o arquivo, faça commit das alterações e envie por push.

Para obter mais informações, confira Como adicionar uma notificação de status do fluxo de trabalho.

Exemplo de Notificação de status do fluxo de trabalho de publicação

Em aprovação Com falha Sem status
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

Confira também

Próximas etapas