Implantação no Serviço de Aplicativo usando o GitHub Actions

Introdução ao GitHub Actions para automatizar o fluxo de trabalho e implantar no Serviço de Aplicativo do Azure no GitHub.

Pré-requisitos

Configurar a implantação do GitHub Actions ao criar o aplicativo

A implantação do GitHub Actions é integrada ao assistente de criação de aplicativo padrão. Você só precisa configurar a Implantação contínua para Habilitar na guia Implantação e configurar a organização, o repositório e a ramificação desejada.

A screenshot showing how to enable GitHub Actions deployment in the App Service create wizard.

Quando você habilita a implantação contínua, o assistente de criação de aplicativo escolhe automaticamente o método de autenticação com base na seleção de autenticação básica e configura seu aplicativo e seu repositório GitHub de acordo:

Seleção básica de autenticação Método de autenticação
Desabilitar Identidade atribuída pelo usuário (OpenID Connect)
Habilitar Autenticação Básica

Observação

Se você receber um erro ao criar seu aplicativo informando que sua conta do Azure não tem determinadas permissões, ela poderá não ter as permissões necessárias para criar e configurar a identidade atribuída pelo usuário. Para obter uma alternativa, confira Configurar a implantação do GitHub Actions no Centro de Implantação.

Configurar a implantação do GitHub Actions no Centro de Implantação

Para um aplicativo existente, você pode começar rapidamente com o GitHub Actions usando o Centro de Implantação do Serviço de Aplicativo. Este método pronto para uso gera automaticamente um arquivo de fluxo de trabalho do GitHub Actions com base na pilha de aplicativos e o envia para o repositório GitHub.

O Centro de Implantação também permite configurar facilmente a autenticação OpenID Connect mais segura com a opção de identidade atribuída pelo usuário.

Se a sua conta do Azure tiver as permissões necessárias, você poderá optar por criar uma identidade atribuída pelo usuário. Caso contrário, poderá selecionar uma identidade gerenciada atribuída pelo usuário existente na lista suspensa Identidade. Você pode trabalhar com o administrador do Azure para criar uma identidade gerenciada atribuída pelo usuário com a função Colaborador do Site.

Para obter mais informações, consulte Implantação contínua no Serviço de Aplicativo do Azure.

Configurar um fluxo de trabalho do GitHub Actions manualmente

Você também pode implantar um fluxo de trabalho sem usar o Centro de Implantação.

  1. Gerar as credenciais de implantação
  2. Configurar o segredo do GitHub
  3. Adicionar o arquivo de fluxo de trabalho ao seu repositório GitHub

1. Gerar as credenciais de implantação

A maneira recomendada de autenticar com os Serviços de Aplicativo do Azure para GitHub Actions é com uma identidade gerenciada definida pelo usuário e a maneira mais fácil para isso é configurando a implantação do GitHub Actions diretamente no portal e selecionando a identidade gerenciada atribuída pelo usuário.

Observação

A autenticação usando uma identidade gerenciada atribuída pelo usuário está atualmente em versão prévia.

Como alternativa, você pode autenticar com uma entidade de serviço, OpenID Connect ou um perfil de publicação.

Observação

O perfil de publicação requer que a autenticação básica seja habilitada.

Um perfil de publicação é uma credencial de nível de aplicativo. Configure o perfil de publicação como segredo do GitHub.

  1. Acesse o serviço de aplicativo no portal do Azure.

  2. Na página Visão geral, selecione Obter perfil de publicação.

  3. Salve o arquivo baixado. Você usará o conteúdo do arquivo para criar um segredo do GitHub.

Observação

A partir de outubro de 2020, os aplicativos Web do Linux precisam da configuração do aplicativo WEBSITE_WEBDEPLOY_USE_SCM definida como trueantes de baixar o perfil de publicação. Esse requisito será removido no futuro.

2. Configurar o segredo do GitHub

Em GitHub, procure seu repositório. Selecione Configurações > Segurança > Segredos e variáveis > Ações > Novo segredo do repositório.

Para usar as credenciais de nível de aplicativo, cole o conteúdo do arquivo de perfil de publicação baixado no campo de valor do segredo. Nomeie o segredo como AZURE_WEBAPP_PUBLISH_PROFILE.

Ao configurar o arquivo de fluxo de trabalho do GitHub posteriormente, use o AZURE_WEBAPP_PUBLISH_PROFILE na ação implantar o Aplicativo Web do Azure. Por exemplo:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

3. Adicionar o arquivo de fluxo de trabalho ao repositório GitHub

Um fluxo de trabalho é definido por um arquivo YAML (.yml) no caminho /.github/workflows/ do seu repositório GitHub. Essa definição contém as várias etapas e os parâmetros que compõem o fluxo de trabalho.

No mínimo, o arquivo de fluxo de trabalho teria as seguintes etapas distintas:

  1. Autenticar com o Serviço de Aplicativo usando o segredo do GitHub que você criou.
  2. Criar o aplicativo Web.
  3. Implantar o aplicativo Web.

Para implementar o seu código em um aplicativo do Serviço de Aplicativo, use a ação azure/webapps-deploy@v3. A ação requer o nome do seu aplicativo Web no app-name e, dependendo da pilha de idiomas, o caminho de um *.zip, *.war, *.jar ou pasta para implantar no package. Para obter uma lista completa de possíveis entradas para a ação azure/webapps-deploy@v3, confira a definição action.yml.

Os exemplos a seguir mostram a parte do fluxo de trabalho que cria o aplicativo Web, nos diferentes idiomas compatíveis.

A entrada publish-profile deve fazer referência ao segredo do GitHub AZURE_WEBAPP_PUBLISH_PROFILE que você criou anteriormente.

name: .NET Core CI

on: [push]

env:
  AZURE_WEBAPP_NAME: my-app-name    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v3
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE  }} # Define secret variable in repository settings as per action documentation
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'

Próximas etapas

Confira referências sobre o GitHub Actions e fluxos de trabalho do Azure: