Partilhar via


Guia de início rápido: criar um fluxo de trabalho do GitHub para publicar um aplicativo

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

Pré-requisitos

  • Uma conta GitHub.
  • Um repositório de código-fonte .NET.
  • Uma conta do Azure com uma subscrição 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 *. 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. Esta informação deve ser sempre tratada com muito cuidado.

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

GitHub / Settings / Secret: Add new repository secret

Digite AZURE_PUBLISH_PROFILE como Nome e cole o conteúdo XML do perfil de publicação na área de texto Valor. Selecione Add secret (Adicionar segredo). Para obter mais informações, consulte 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 indique claramente o que o fluxo de trabalho pretende fazer. Para obter mais informações, consulte Arquivo de fluxo de trabalho.

Importante

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

Os arquivos de 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, consulte Sintaxe do fluxo de trabalho para ações do GitHub.

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á nos selos de status do fluxo de trabalho.

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

    on:
      push:
        branches: [ production ]
    
    • Acionado quando ocorre um push no production ramo.
  • 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 é posteriormente referenciada para especificar o dotnet-versionactions/setup-dotnet@v3 da Ação do GitHub.
  • O jobs nó cria as etapas a serem executadas pelo fluxo de trabalho.

    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 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 azure/webapps-deploy@v2 Ação do GitHub implanta o aplicativo com os dados publish-profile e package.
      • O publish-profile é atribuído a partir do AZURE_PUBLISH_PROFILE segredo do repositório.

Criar um selo de status do fluxo de trabalho

É uma nomenclatura comum para repositórios do GitHub ter 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 um selo de status, que são visualmente atraentes 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 para o fluxo de trabalho selecionado.
  3. Selecione a opção de menu Criar selo de status.

    GitHub: Create status badge

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

    GitHub: Copy status badge Markdown

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

Para saber mais, consulte Adicionando um selo de status do fluxo de trabalho.

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

Passagem Com falhas Sem estatuto
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

Consulte também

Próximos passos