Partilhar via


AzureWebApp@1 - Tarefa Azure Web App v1

Esta tarefa implanta um Aplicativo Web do Azure para Linux ou Windows.

Sintaxe

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

Insumos

azureSubscription - de assinatura do Azure
string. Necessário.

Especifica o de conexão de assinatura do Azure Resource Manager para a implantação.


appType - Tipo de aplicativo
string. Necessário. Valores permitidos: webApp (Web App no Windows), webAppLinux (Web App no Linux).

Especifica o tipo de Aplicativo Web do Azure.


appName - Nome do aplicativo
string. Necessário.

Especifica o nome de um Serviço de Aplicativo do Azure existente. Somente os serviços de aplicativo baseados no tipo de aplicativo selecionado serão listados.


deployToSlotOrASE - Implantar no Slot ou no Ambiente do Serviço de Aplicativo
boolean. Opcional. Use quando appType != "". Valor padrão: false.

Seleciona a opção para implantar em um slot de implantação existente ou em um Ambiente do Serviço de Aplicativo do Azure.
Para ambos os destinos, a tarefa precisa de um nome de grupo de recursos.
Se o destino de implantação for um slot, o padrão será o slot de produção. Qualquer outro nome de slot existente também pode ser fornecido.
Se o destino de implantação for um Ambiente do Serviço de Aplicativo do Azure, deixe o nome do slot como 'produção' e especifique o nome do grupo de recursos.


resourceGroupName - Grupo de recursos
string. Necessário quando deployToSlotOrASE = true.

O nome do grupo de recursos é necessário quando o destino de implantação é um slot de implantação ou um Ambiente do Serviço de Aplicativo do Azure.
Especifica o grupo de recursos do Azure que contém o Serviço de Aplicativo do Azure indicado acima.


slotName - Slot
string. Necessário quando deployToSlotOrASE = true. Valor padrão: production.

Especifica um slot existente, excluindo o slot de produção.


package - de pacotes ou pastas
string. Necessário. Valor padrão: $(System.DefaultWorkingDirectory)/**/*.zip.

O caminho do arquivo para o pacote ou pasta que contém o conteúdo do Serviço de Aplicativo gerado pelo MSBuild, um arquivo zip compactado ou um arquivo war. Variáveis ( Build | Release) e curingas são suportadas. Por exemplo, $(System.DefaultWorkingDirectory)/**/*.zip ou $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - pasta de implantação personalizada
string. Opcional. Use quando package EndsWith .war.

Especifica o nome da pasta personalizada na qual você deseja implantar.
Se o campo estiver vazio, o pacote será implantado no <appname>.azurewebsites.net/<warpackagename>.
Se ROOT for inserido, o pacote será implantado em <appname>.azurewebsited.net.
Em todas as outras instâncias, ele é implantado em <appname>.azurewebsited.net/<customWarName>.


runtimeStack - pilha de tempo de execução
string. Opcional. Use quando appType = webAppLinux.

O Web App no Linux oferece duas opções diferentes para publicar seu aplicativo: implantação de imagem personalizada (Web App for Containers) e implantação de aplicativo com uma imagem de plataforma integrada (Web App no Linux). Esse parâmetro só está disponível quando do Linux Web App é selecionado como um tipo de aplicativo na tarefa.


startUpCommand - Comando de inicialização
string. Opcional. Use quando appType = webAppLinux.

Especifica o comando start-up.
Por exemplo:
dotnet run
dotnet filename.dll.


customWebConfig - Gerar parâmetros de web.config para aplicativos Python, Node.js, Go e Java
string. Opcional. Use quando appType != webAppLinux && package NotEndsWith .war.

Um web.config padrão será gerado e implantado no Serviço de Aplicativo do Azure se o aplicativo não tiver um. Os valores em web.config variam com base na estrutura do aplicativo e podem ser editados. Por exemplo, para o aplicativo node.js, web.config terá um arquivo de inicialização e iis_node valores de módulo. Este recurso de edição é apenas para o gerado web.config.


appSettings - Configurações do aplicativo
string.

Especifique as configurações do aplicativo Web usando a sintaxe -key value (por exemplo: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Coloque valores que contenham espaços entre aspas duplas (por exemplo: "Eastern Standard Time").


configurationStrings - Definições de configuração
string.

Especifique as definições de configuração do aplicativo Web usando a sintaxe -key value (por exemplo: -phpVersion 5.6-linuxFxVersion: node|6.11). Coloque valores que contenham espaços entre aspas duplas.


deploymentMethod - Método de implantação
string. Necessário quando appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Valores permitidos: auto (Auto-detect), zipDeploy (Zip Deploy) runFromPackage (Run From Package). Valor padrão: auto.

Escolha o método de implantação para o aplicativo. Os valores aceitáveis são automático, zipDeploye runFromPackage.


Opções de controlo de tarefas

Todas as tarefas têm opções de controle, além de suas entradas de tarefas. Para obter mais informações, consulte Opções de controle de e propriedades de tarefas comuns.

Variáveis de saída

Esta tarefa define as seguintes variáveis de saída , que você pode consumir em etapas, trabalhos e estágios downstream.

AppServiceApplicationUrl
A URL do aplicativo do Serviço de Aplicativo do Azure selecionado.

Comentários

Use esta tarefa para implantar aplicativos Web no Serviço de Aplicativo do Azure.

Métodos de implantação

Vários métodos de implantação estão disponíveis nesta tarefa. Auto é a opção padrão.

Para alterar a opção de implantação baseada em pacote na tarefa do designer, expanda Opções de Implantação Adicionais e habilite Selecionar Método de Implantação.

Com base no tipo de Serviço de Aplicativo do Azure e no agente do Azure Pipelines, a tarefa escolhe uma tecnologia de implantação adequada. As diferentes tecnologias de implantação usadas pela tarefa são:

  • Kudu REST APIs
  • Implantação Zip
  • RunFromPackage

Por padrão, a tarefa tenta selecionar a tecnologia de implantação apropriada dado o pacote de entrada, o tipo de serviço do aplicativo e o sistema operacional do agente.

  • Quando o tipo de serviço de aplicativo for Web App on Linux App, use Zip Deploy
  • Se um arquivo War for fornecido, use War Deploy
  • Se um arquivo Jar for fornecido, use Run From Package
  • Para todos os outros, use Run From Zip (via Zip Deploy)

Em um agente que não seja do Windows (para qualquer tipo de serviço de aplicativo), a tarefa depende de APIs REST do Kudu implantar o aplicativo Web.

Kudu REST APIs

APIs REST Kudu funcionar em agentes de automação Windows ou Linux quando o destino é Web App no Windows, Web App no Linux (fonte interna) ou Function App. A tarefa usa o Kudu para copiar arquivos para o Serviço de Aplicativo do Azure.

Implantação Zip

Cria um pacote de implantação .zip do pacote ou pasta escolhidos. O conteúdo do arquivo é implantado na pasta wwwroot do aplicativo de função no Serviço de Aplicativo do Azure. Esta opção substitui todo o conteúdo existente na pasta wwwroot. Para obter mais informações, consulte implantação do Zip para o Azure Functions.

RunFromPackage

Cria o mesmo pacote de implantação que o Zip Deploy. No entanto, em vez de implantar arquivos na pasta wwwroot, todo o pacote é montado pelo tempo de execução do Azure Functions. Com esta opção, os ficheiros na pasta wwwroot tornam-se só de leitura. Para obter mais informações, consulte executar o Azure Functions a partir de um arquivo de pacote.

Erro: Não foi possível buscar o token de acesso para o Azure. Verifique se a entidade de serviço usada é válida e não expirou.

A tarefa usa a entidade de serviço na conexão de serviço para autenticar com o Azure. Se a entidade de serviço tiver expirado ou não tiver permissões para o Serviço de Aplicativo, a tarefa falhará com esse erro. Verifique a validade da entidade de serviço usada e se ela está presente no registro do aplicativo. Para obter mais informações, consulte Usar controle de acesso baseado em função para gerenciar o acesso aos recursos de assinatura do Azure. Esta postagem de blog também contém mais informações sobre como usar a autenticação da entidade de serviço.

Erro SSL

Se você quiser usar um certificado no Serviço de Aplicativo, o certificado deverá ser assinado por uma autoridade de certificação confiável. Se seu aplicativo Web fornecer erros de validação de certificado, você provavelmente está usando um certificado autoassinado. Defina uma variável chamada VSTS_ARM_REST_IGNORE_SSL_ERRORS para o valor true no pipeline de compilação ou liberação para resolver o erro.

Uma liberação trava por muito tempo e, em seguida, falha

Esse problema pode ser o resultado de capacidade insuficiente em seu plano do Serviço de Aplicativo. Para resolver esse problema, você pode dimensionar a instância do Serviço de Aplicativo para aumentar a CPU, a RAM e o espaço em disco disponíveis ou tentar usar um plano diferente do Serviço de Aplicativo.

5xx códigos de erro

Se você estiver vendo um erro de 5xx, verifique o status do seu serviço do Azure.

Azure Function de repente parou de funcionar

O Azure Functions pode parar de funcionar subitamente se tiver passado mais de um ano desde a última implantação. Se você implantar com "RunFromPackage" em "deploymentMethod", uma SAS com uma data de expiração de 1 ano será gerada e definida como o valor de "WEBSITE_RUN_FROM_PACKAGE" na configuração do aplicativo. O Azure Functions usa essa SAS para fazer referência ao arquivo de pacote para execução da função, portanto, se a SAS tiver expirado, a função não será executada. Para resolver esse problema, implante novamente para gerar uma SAS com uma data de expiração de um ano.

Erro: Nenhum pacote encontrado com o padrão especificado

Verifique se o pacote mencionado na tarefa é publicado como um artefato na compilação ou em um estágio anterior e baixado no trabalho atual.

Erro: A opção Publicar usando zip deploy não é suportada para o tipo de pacote msBuild

Os pacotes da Web criados por meio da tarefa MSBuild (com argumentos padrão) têm uma estrutura de pastas aninhada que pode ser implantada corretamente somente pela Implantação da Web. A opção de implantação publish-to-zip não pode ser usada para implantar esses pacotes. Para converter a estrutura de embalagem, siga estas etapas:

  1. Na tarefa Compilar solução, altere o Argumentos do MSBuild para :

    Captura de tela que mostra os valores da solução de compilação.

  2. Adicione uma tarefa Arquivo morto e altere os valores da seguinte maneira:

    1. Altere pasta ou arquivo raiz para arquivar para $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Desmarque a caixa de seleção Prepend root folder name to archive paths:

      Captura de tela que mostra os valores de Arquivo.

Perguntas frequentes

Qual é a diferença entre as tarefas AzureWebApp e AzureRmWebAppDeployment?

O de tarefas do Azure Web App () é a maneira mais simples de implantar em um Aplicativo Web do Azure. Por padrão, sua implantação acontece com o aplicativo raiz no Aplicativo Web do Azure.

A tarefa Implantação do Serviço de Aplicativo do Azure (AzureRmWebAppDeployment pode lidar com cenários mais personalizados, como:

Observação

As transformações de arquivo e a substituição de variáveis também são suportadas pela tarefa separada Transformação de Arquivo para uso no Azure Pipelines. Você pode usar a tarefa Transformação de arquivo para aplicar transformações de arquivo e substituições de variáveis em qualquer arquivo de configuração e parâmetros.

A implantação do aplicativo Web no Windows foi bem-sucedida, mas o aplicativo não está funcionando

Isso pode ser porque web.config não está presente em seu aplicativo. Você pode adicionar um arquivo web.config à sua origem ou gerar automaticamente um usando Definições de Aplicativo e Configuração.

  • Clique na tarefa e vá para Gerar parâmetros de web.config para aplicativos Python, Node.js, Go e Java.

    Captura de tela da caixa de diálogo Gerar parâmetros de web.config.

  • Clique no botão mais ... para editar os parâmetros.

    Captura de ecrã da caixa de diálogo pendente.

  • Selecione o tipo de aplicativo na lista suspensa.

  • Clique em OK. Isso preencherá os parâmetros de web.config necessários para gerar web.config.

A implantação do aplicativo Web no Ambiente do Serviço de Aplicativo (ASE) não está funcionando

  • Verifique se o agente de compilação do Azure DevOps está na mesma VNET (a sub-rede pode ser diferente) que o ILB (Balanceador de Carga Interno) do ASE. Isso permitirá que o agente extraia código do Azure DevOps e implante no ASE.
  • Se você estiver usando o Azure DevOps, o agente não precisará estar acessível pela Internet, mas precisará apenas de acesso de saída para se conectar ao Serviço de DevOps do Azure.
  • Se você estiver usando o TFS/Azure DevOps Server implantado em uma Rede Virtual, o agente poderá ser completamente isolado.
  • O agente de compilação deve ser configurado com a configuração DNS do aplicativo Web no qual ele precisa ser implantado. Os recursos privados na Rede Virtual não têm entradas no DNS do Azure, portanto, isso precisa ser adicionado ao arquivo do host na máquina do agente.
  • Se um certificado autoassinado for usado para a configuração do ASE, a opção -allowUntrusted precisará ser definida na tarefa de implantação do MSDeploy. Também é recomendado definir a variável VSTS_ARM_REST_IGNORE_SSL_ERRORS como true. Se um certificado de uma autoridade de certificação for usado para a configuração do ASE, isso não deverá ser necessário.

Como devo configurar minha conexão de serviço?

Esta tarefa requer uma conexão de serviço do Azure Resource Manager.

Como devo configurar a implantação de trabalho na Web com o Application Insights?

Ao implantar em um Serviço de Aplicativo, se você tiver Application Insights configurado e tiver habilitado Remove additional files at destination, também precisará habilitar Exclude files from the App_Data folder. Habilitar essa opção mantém a extensão do Application Insights em um estado seguro. Esta etapa é necessária porque o WebJob contínuo do Application Insights está instalado na pasta App_Data.

Como devo configurar meu agente se ele estiver atrás de um proxy enquanto estou implantando no Serviço de Aplicativo?

Se o agente auto-hospedado exigir um proxy da Web, você poderá informar o agente sobre o proxy durante a configuração. Isso permite que seu agente se conecte ao Azure Pipelines ou ao Azure DevOps Server por meio do proxy. Saiba mais sobre como executar um agente auto-hospedado por trás de um proxy da Web.

Exemplos

A seguir está um exemplo de trecho do YAML para implantar o aplicativo Web no Serviço de Aplicativo Web do Azure em execução no Windows.

variables:
  azureSubscription: Contoso
  # To ignore SSL error uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Para implantar o Web App no Linux, adicione o parâmetro appType e defina-o como appType: webAppLinux.

Para especificar o método de implantação como Zip Deploy, adicione o parâmetro deploymentMethod: zipDeploy. Outro valor suportado para este parâmetro é runFromPackage.

Se não for especificado, auto é o valor padrão.

Requerimentos

Exigência Descrição
Tipos de pipeline YAML, Construção clássica, Versão clássica
Funciona em Agente, DeploymentGroup
Exigências Nenhum
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 2.209.0 ou superior
Categoria de tarefa Implantar
Exigência Descrição
Tipos de pipeline YAML, Construção clássica, Versão clássica
Funciona em Agente, DeploymentGroup
Exigências Nenhum
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 2.104.1 ou superior
Categoria de tarefa Implantar