Compartilhar via


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 no 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 guia rápido você publicará no Azure.

Pré-requisitos

  • Uma conta do GitHub.
  • Um repositório de código-fonte do .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. No recurso Visão Geral, selecione Obter perfil de publicação e salve o *.PublishSetting file localmente.

Portal do Azure, recurso do Serviço de Aplicativo: Obter perfil de publicação

Aviso

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

No repositório 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 / Configurações / Segredo: Adicionar novo segredo do repositório

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, consulte Os segredos criptografados.

Criar um arquivo de fluxo de trabalho

No repositório GitHub, adicione um novo arquivo YAML ao diretório .github/workflows . Escolha um nome de arquivo significativo, algo que indicará claramente o que o fluxo de trabalho pretende fazer. Para obter mais informações, consulte o arquivo de fluxo de trabalho.

Importante

O GitHub exige que os arquivos de composição de fluxo de trabalho sejam colocados no diretório .github/fluxos de trabalho .

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

Crie um novo arquivo chamado publish-app.yml, 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 do fluxo de trabalho anterior:

  • O name: publish define o nome, "publicar" aparecerá em emblemas de status de fluxo de trabalho.

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

    on:
      push:
        branches: [ production ]
    
    • Disparado quando ocorre um push na ramificação production.
  • O env nó 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 AZURE_WEBAPP_NAME de ambiente recebe o valor DotNetWeb.
    • A variável AZURE_WEBAPP_PACKAGE_PATH de ambiente recebe o valor '.'.
    • A variável DOTNET_VERSION de ambiente recebe o valor '6.0.401'. A variável de ambiente é referenciada posteriormente para especificar a dotnet-version ação do actions/setup-dotnet@v3 GitHub.
  • O jobs nó cria 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 actions/setup-dotnet@v3 Ação do GitHub é usada para configurar o SDK do .NET com a versão especificada da DOTNET_VERSION variável de ambiente.
    • O dotnet restore comando é chamado.
    • O dotnet build comando é chamado.
    • O dotnet publish comando é chamado.
    • O dotnet test comando é chamado.
    • A ação do GitHub azure/webapps-deploy@v2 implanta o aplicativo com publish-profile e package determinados.
      • publish-profile é atribuído a partir do segredo do repositório AZURE_PUBLISH_PROFILE.

Criar um selo 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 é visualmente atraente dentro do arquivo README.md . Para adicionar o selo de status do fluxo de trabalho:

  1. No repositório 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 do fluxo de trabalho selecionado.
  3. Selecione a opção Criar emblema de status.

    GitHub: Criar selo de status

  4. Selecione o botão Copiar selo de status Markdown .

    GitHub: Copiar o selo de status Markdown

  5. Cole o Markdown no arquivo README.md , salve o arquivo, confirme e envie por push as alterações.

Para obter mais informações, consulte Adicionar um selo de status de fluxo de trabalho.

Insígnia de exemplo de status do fluxo de trabalho de publicação

Passagem Falhando Sem status
GitHub: publicar selo de passagem GitHub: publicar badge indicando falha GitHub: publicar selo sem status

Consulte também

Próximas etapas