Solucionar problemas de tarefas de implantação do Aplicativo Web do Azure

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Este artigo ajuda você a resolver erros comuns que ocorrem quando você usa as tarefas de Aplicativo Web do Azure (AzureWebApp@1) ou Implantação do Serviço de Aplicativo do Azure (AzureRmWebAppDeployment@4) no Azure Pipelines.

Este é um artigo de solução de problemas. Para saber mais sobre implantações do Serviço de Aplicativo, consulte Implantar no Serviço de Aplicativo do Azure usando o Azure Pipelines, que abrange AzureWebApp@1 e cenários avançados com AzureRmWebAppDeployment@4. Para implantações baseadas em contêiner, consulte Implantar um contêiner personalizado no Serviço de Aplicativo usando o Azure Pipelines, que inclui AzureRmWebAppDeployment@4 exemplos.

Dica

Antes de solucionar problemas, reúna logs de depuração habilitando o log verboso para a execução do pipeline. Você também pode coletar logs de diagnóstico do serviço Kudu e o recurso Diagnosticar e resolver problemas no portal do Azure para seu Serviço de Aplicativo. Verifique o status do Azure DevOps e o status do Azure para excluir interrupções de serviço.

"Falta de memória no heap do JavaScript"

Sintoma

A tarefa de implantação falha com o seguinte erro:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

Motivo

Esse erro ocorre quando a tarefa tenta descompactar e compactar novamente um grande pacote de implantação e a operação excede a memória disponível no agente. Os agentes hospedados pela Microsoft têm recursos limitados, o que pode causar essa falha para pacotes grandes.

Resolução

Use a tarefa Azure Web App (AzureWebApp@1) em vez da tarefa AzureRmWebAppDeployment@4 para implantações do Serviço de Aplicativo. A AzureWebApp@1 tarefa lida com pacotes grandes de forma mais eficiente.

Para cenários de implantação mais complicados que exigem transformação XML, use a tarefa Implantação do Serviço de Aplicativo do Azure (AzureRmWebAppDeployment@4) com um pacote menor ou divida transformações em uma etapa de pipeline separada.

"ECONNRESET" durante a implantação

Sintoma

A tarefa de implantação falha com o seguinte erro:

Encountered a retriable error: ECONNRESET. Message: read ECONNRESET

Motivo

Uma conexão de rede entre o agente de pipeline e o Serviço de Aplicativo foi redefinida durante a implantação. As causas mais comuns incluem:

  • Agentes hospedados pela Microsoft implantando em um App Service Environment (ASE): O ASE pode bloquear conexões de entrada dos endereços IP dos agentes.
  • Agentes auto-hospedados: Uma conexão de rede instável ou flutuante entre o agente e o Serviço de Aplicativo.

Resolução

Para agentes hospedados pela Microsoft com o ASE:

Verifique se as regras de segurança de rede do ASE permitem conexões de entrada dos intervalos de IP do agente hospedado pela Microsoft para sua geografia. Para obter a lista de intervalos de endereços IP, consulte Endereços IP permitidos e URLs de domínio.

Para agentes autohospedados:

  • Verifique se a conexão de rede entre o agente e o Serviço de Aplicativo está estável.
  • Se o problema persistir, crie um tíquete de suporte com o Serviço de Aplicativo do Azure ou a equipe de Rede do Azure para uma investigação mais detalhada.

Falha ao implantar o pacote Web no App Service

Sintoma

A tarefa de implantação falha com um ou ambos os seguintes erros:

[error]Failed to deploy web package to App Service.
Package deployment using ZIP Deploy failed. Refer logs for more details.

Motivo

A tarefa usa a API do Kudu zipDeploy para implantação e a API retornou um erro. Esse erro pode ocorrer quando o Serviço de Aplicativo não pode processar o pacote de entrada corretamente.

Resolução

Defina a configuração do app WEBSITE_RUN_FROM_PACKAGE para 1 no seu Serviço de Aplicativo:

  1. No portal do Azure, acesse o Serviço de Aplicativo.
  2. Selecione Configuração>Configurações do aplicativo.
  3. Adicione ou atualize a configuração WEBSITE_RUN_FROM_PACKAGE com um valor igual a 1.
  4. Salve a configuração e repita a implantação.

Para obter mais informações, consulte Executar seu aplicativo em um pacote.

"EMFILE: muitos arquivos abertos"

Sintoma

A tarefa de implantação falha com um dos seguintes erros:

EMFILE: too many open files
Error: Package deployment using ZIP Deploy failed

Motivo

A tarefa de implantação abre muitos manipuladores de arquivos ao descompactar um pacote grande, excedendo o limite de descritores de arquivo do sistema operacional.

Resolução

Use uma das seguintes soluções alternativas:

Opção 1: usar a tarefa de Aplicativo Web do Azure

Alterne de AzureRmWebAppDeployment@4 para a tarefa Azure Web App (AzureWebApp@1), que processa pacotes grandes de maneira diferente.

Opção 2: extrair arquivos antes da implantação

Use a tarefa Extrair Arquivos para descompactar o pacote em uma etapa anterior e, em seguida, implantar a pasta extraída. Essa abordagem impede que a tarefa de implantação precise descompactar o pacote em si.

steps:
- task: ExtractFiles@1
  displayName: 'Extract files'
  inputs:
    archiveFilePatterns: '$(InputPackageZipPath)'
    destinationFolder: '$(OutputUnzippedPath)'

- task: AzureRmWebAppDeployment@4
  displayName: 'Azure App Service Deploy'
  inputs:
    azureSubscription: 'Subscription'
    WebAppName: 'app-name'
    package: '$(OutputUnzippedPath)'

Erro "Recurso não existe"

Sintoma

A tarefa de implantação falha com o seguinte erro:

Error: Resource '<ResourceName>' doesn't exist. Resource should exist before deployment.

Esse erro pode ocorrer com tarefas do Aplicativo Web do Azure, tarefas de Implantação do Serviço de Aplicativo do Azure, tarefas do Azure Functions e tarefas de implantação de modelo do ARM.

Motivo

A tarefa chama APIs do Azure que dependem de dados de recursos armazenados em cache. Se o Serviço de Aplicativo ou outro recurso do Azure tiver sido criado recentemente , seja no mesmo pipeline, por outra ferramenta ou pouco antes da execução do pipeline, o cache talvez ainda não reflita o novo recurso.

Resolução

Adicione uma etapa de atraso no pipeline antes da tarefa de implantação para permitir que o cache do Azure atualize:

steps:
- task: PowerShell@2
  displayName: 'Wait for resource propagation'
  inputs:
    targetType: inline
    script: Start-Sleep -Seconds 60

Se a adição de um atraso não resolver o erro, crie um tíquete de suporte com a equipe de suporte da Azure para o tipo de recurso afetado.

"Nenhum pacote encontrado com o padrão especificado"

Sintoma

A tarefa de implantação falha com um erro indicando que nenhum pacote foi encontrado correspondendo ao padrão especificado.

Motivo

O artefato que contém o pacote de implantação não foi publicado na compilação ou em um estágio anterior, ou não foi baixado na tarefa atual.

Resolução

  • Verifique se a compilação ou um estágio anterior do pipeline publica o pacote como um artefato de pipeline.
  • Confirme se o trabalho atual inclui uma etapa de download para o artefato.
  • Verifique se o padrão de caminho do arquivo na tarefa de implantação corresponde ao caminho real do artefato.

"Não há suporte para publicar usando a opção de implantação zip para o tipo de pacote MSBuild"

Sintoma

A tarefa de implantação falha com um erro sobre a implantação zip não ter suporte para tipos de pacotes do MSBuild.

Motivo

Os pacotes Web criados pela tarefa MSBuild (com argumentos padrão) usam uma estrutura de pasta aninhada que requer o Web Deploy para o correto funcionamento da implantação. A opção de implantação zip não pode lidar com essa estrutura de pacotes.

Resolução

Use a tarefa AzureRmWebAppDeployment@4 com o Web Deploy em vez da implantação de zip, ou reestruture seu build para produzir uma saída baseada em pasta. Para gerar uma saída de pasta a partir do MSBuild, adicione o argumento /p:PackageAsSingleFile=false à sua tarefa do MSBuild.

Erro 5xx durante a implantação

Sintoma

A tarefa de implantação falha com um 500, 502, 503 ou outro código de erro HTTP 5xx.

Motivo

Ocorreu um erro no lado do servidor no Serviço de Aplicativo ou em sua infraestrutura subjacente. As causas comuns incluem capacidade insuficiente do Plano do Serviço de Aplicação, uma interrupção contínua do Azure ou o Serviço de Aplicação em um estado parado ou em erro.

Resolução

  • Verifique o status do Azure para interrupções contínuas.
  • No portal do Azure, verifique se o Serviço de Aplicativo está em execução e se o Plano do Serviço de Aplicativo tem capacidade suficiente.
  • Aumente o Plano do Serviço de Aplicativo para aumentar a CPU, a RAM e o espaço em disco ou tente um plano diferente.
  • Examine os logs do Kudu para obter mais detalhes sobre o erro do lado do servidor.

A implementação trava e então falha ou "503 serviço indisponível"

Sintoma

Uma implantação ocorre por um período prolongado e, eventualmente, falha, ocorre um erro 503 Service Unavailable ou o histórico de implantação nos logs do Kudu não atualiza.

Motivo

Esses problemas normalmente ocorrem quando o Plano do Serviço de Aplicativo não tem capacidade suficiente para lidar com a implantação junto com o aplicativo em execução.

Resolução

  • Aumente a instância do Serviço de Aplicativo para aumentar a CPU, a RAM e o espaço em disco disponíveis.
  • Tente implantar em um Plano de Serviço do Aplicativo diferente para eliminar a contenção de recursos.
  • Revise os logs de diagnóstico do Kudu no portal do Azure em busca de erros específicos.
  • Para implantações sem tempo de inatividade, utilize slots de implantação com troca de slots em vez de implantar diretamente no slot de produção.

Erros de conectividade de rede durante a implantação

Sintoma

A tarefa de implantação falha com um erro relacionado à rede, como:

Could not connect to the remote computer ('<AppName>.scm.azurewebsites.net')

Motivo

O agente do pipeline não consegue acessar o endpoint do Kudu do App Service (site do SCM) devido a regras de firewall, configurações de proxy ou restrições de rede.

Resolução

Examine a configuração de rede para o tipo de agente:

"Não foi possível buscar o token de acesso para o Azure"

Sintoma

A tarefa de implantação falha com o seguinte erro:

Could not fetch access token for Azure. Verify if the Service Principal used is valid and not expired.

Motivo

O principal de serviço que dá suporte à conexão de serviço do Azure expirou, está desabilitado ou não possui as permissões necessárias.

Resolução

Verifique o principal de serviço no Microsoft Entra ID e renove o segredo ou certificado se tiver expirado. Para obter etapas detalhadas de solução de problemas, consulte Solucionar problemas de conexões de serviço do Azure Resource Manager.

Erro SSL na tarefa de implantação

Sintoma

A tarefa de implantação falha com um erro relacionado a SSL.

Motivo

O Serviço de Aplicativo tem um problema de configuração de certificado SSL, como o uso de um certificado não confiável ou autoassinado.

Resolução

Verifique se o certificado usado pelo Serviço de Aplicativo é assinado por uma autoridade de certificação confiável. Para obter mais informações, consulte Adicionar e gerenciar certificados TLS/SSL no Serviço de Aplicativo do Azure.

Códigos de erro de Implantação da Web

Sintoma

Ao usar o Web Deploy como método de implantação, o log de tarefas exibe um código de erro do Web Deploy, como ERROR_CONNECTION_NOT_FOUND, ERROR_DESTINATION_NOT_REACHABLE, ou outros.

Motivo

O Web Deploy encontrou um problema ao se comunicar ou implantar no App Service.

Resolução

Consulte códigos de erro de implantação da Web para obter uma lista completa de códigos de erro e suas resoluções.

"ERROR_FILE_IN_USE" ao implantar aplicativos .NET

Sintoma

A tarefa de implantação falha com um ERROR_FILE_IN_USE erro ao implantar um aplicativo .NET no Serviço de Aplicativo no Windows.

Motivo

Os arquivos de aplicativo são bloqueados pelo processo de aplicativo em execução durante a implantação.

Resolução

AzureRmWebAppDeployment@4 Na tarefa, habilite as seguintes opções:

  • Renomear arquivos bloqueados (enableMSDeployAppOffline: true)
  • Leve o aplicativo offline (enableMSDeployRetry: true)

Para implantações sem tempo de inatividade, use slots de implantação com trocas de slot.

Aplicativo implantado com êxito, mas não funcionando (Windows)

Sintoma

A implantação é concluída sem erros, mas o aplicativo não responde nem retorna erros quando você navega até ele.

Motivo

No Serviço de Aplicativo do Windows, um web.config arquivo é necessário para muitos tipos de aplicativo (como Node.js ou Python). Se o arquivo estiver ausente, o IIS não poderá rotear solicitações para seu aplicativo.

Resolução

Adicione um web.config arquivo à raiz do aplicativo. Para obter mais informações, consulte Configurar um contêiner personalizado para o Serviço de Aplicativo do Azure e as diretrizes específicas da estrutura:

Falha na implantação do Aplicativo de Funções com a tarefa AzureRmWebAppDeployment

Sintoma

Falha ao implantar um aplicativo de função do Azure usando a tarefa AzureRmWebAppDeployment@4.

Motivo

A tarefa AzureRmWebAppDeployment@4 foi projetada para implantações do Serviço de Aplicativo e pode não atender corretamente aos requisitos específicos do Aplicativo de Funções.

Resolução

Em vez disso, use a tarefa do Azure Functions (AzureFunctionApp@1), que foi projetada especificamente para implantações do Aplicativo de Funções.