AzureWebApp@1 - Tarefa v1 da Aplicação Web do Azure

Esta tarefa implementa uma Aplicação Web do Azure para Linux ou Windows.

Syntax

# 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.

Entradas

azureSubscription - Subscrição do Azure
string. Obrigatório.

Especifica a ligação de subscrição do Azure Resource Manager para a implementação.


appType - Tipo de aplicação
string. Obrigatório. Valores permitidos: webApp (Aplicação Web no Windows), webAppLinux (Aplicação Web no Linux).

Especifica o tipo de Aplicação Web do Azure.


appName - Nome da aplicação
string. Obrigatório.

Especifica o nome de uma Serviço de Aplicações do Azure existente. Apenas os serviços de aplicações baseados no tipo de aplicação selecionado serão listados.


deployToSlotOrASE - Implementar no Bloco ou Ambiente do Serviço de Aplicações
boolean. Opcional. Utilize quando appType != "". Valor predefinido: false.

Seleciona a opção para implementar num bloco de implementação existente ou num Ambiente de Serviço de Aplicações do Azure.
Para ambos os destinos, a tarefa precisa de um nome de grupo de recursos.
Se o destino de implementação for um bloco, a predefinição é o bloco de produção. Também pode ser fornecido qualquer outro nome de bloco existente.
Se o destino de implementação for um Ambiente Serviço de Aplicações do Azure, deixe o nome do bloco 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 implementação é um bloco de implementação ou um Ambiente de Serviço de Aplicações do Azure.
Especifica o grupo de recursos do Azure que contém o Serviço de Aplicações do Azure indicado acima.


slotName - Bloco
string. Necessário quando deployToSlotOrASE = true. Valor predefinido: production.

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


package - Pacote ou pasta
string. Obrigatório. Valor predefinido: $(System.DefaultWorkingDirectory)/**/*.zip.

O caminho do ficheiro para o pacote ou pasta que contém Serviço de Aplicações conteúdo gerado pelo MSBuild, um ficheiro zip comprimido ou um ficheiro war. São suportadas variáveis (Versão de Compilação | ) e carateres universais. Por exemplo, $(System.DefaultWorkingDirectory)/**/*.zip ou $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - Pasta de Implementação Personalizada
string. Opcional. Utilize quando package EndsWith .war.

Especifica o nome da pasta personalizada na qual pretende implementar.
Se o campo estiver vazio, o pacote será implementado em <appname>.azurewebsites.net/<warpackagename>.
Se o ROOT for introduzido, o pacote será implementado no <appname>.azurewebsited.net.
Em todas as outras instâncias, é implementada no <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Pilha de tempo de execução
string. Opcional. Utilize quando appType = webAppLinux.

A Aplicação Web no Linux oferece duas opções diferentes para publicar a sua aplicação: implementação de imagem personalizada (Aplicação Web para Contentores) e implementação de aplicações com uma imagem de plataforma incorporada (Aplicação Web no Linux). Este parâmetro só está disponível quando a Aplicação Web do Linux é selecionada como um tipo de aplicação na tarefa.


startUpCommand - Comando de arranque
string. Opcional. Utilize quando appType = webAppLinux.

Especifica o comando de arranque.
Por exemplo:
dotnet run
dotnet filename.dll.


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

Será gerada e implementada uma web.config padrão para Serviço de Aplicações do Azure se a aplicação não tiver uma. Os valores no web.config variam consoante a arquitetura da aplicação e podem ser editados. Por exemplo, para a aplicação node.js, web.config terá um ficheiro de arranque e iis_node valores do módulo. Esta funcionalidade de edição destina-se apenas ao web.configgerado .


appSettings - Definições da aplicação
string.

Especifique as definições da aplicação Web com a sintaxe -key value (por exemplo:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Incluir valores que contenham espaços em aspas duplas (por exemplo: "Eastern Standard Time").


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

Especifique as definições de configuração da aplicação Web com a sintaxe -key value (por exemplo: -phpVersion 5.6-linuxFxVersion: node|6.11). Coloque os valores que contêm espaços em aspas duplas.


deploymentMethod - Método de implementação
string. Necessário quando appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Valores permitidos: auto (Deteção automática), zipDeploy (Implementação Zip), runFromPackage (Executar a Partir do Pacote). Valor predefinido: auto.

Escolha o método de implementação da aplicação. Os valores aceitáveis são auto, zipDeploy e runFromPackage.


Opções de controlo de tarefas

Todas as tarefas têm opções de controlo para além das entradas de tarefas. Para obter mais informações, veja Opções de controlo e propriedades de tarefas comuns.

Variáveis de saída

Esta tarefa define as seguintes variáveis de saída, que pode consumir em passos, tarefas e fases a jusante.

AppServiceApplicationUrl
O URL da aplicação do Serviço de Aplicações do Azure selecionado.

Observações

Utilize esta tarefa para implementar aplicações Web para Serviço de Aplicações do Azure.

Métodos de implementação

Estão disponíveis vários métodos de implementação nesta tarefa. Auto é a opção predefinida.

Para alterar a opção de implementação baseada em pacotes na tarefa de estruturador, expanda Opções de Implementação Adicionais e ative Selecionar Método de Implementação.

Com base no tipo de Serviço de Aplicações do Azure e agente do Azure Pipelines, a tarefa escolhe uma tecnologia de implementação adequada. As diferentes tecnologias de implementação utilizadas pela tarefa são:

  • Kudu REST APIs
  • Implementação do Zip
  • RunFromPackage

Por predefinição, a tarefa tenta selecionar a tecnologia de implementação adequada, dado o pacote de entrada, o tipo de serviço de aplicações e o SO do agente.

  • Quando o tipo de serviço de aplicações for Aplicação Web na Aplicação Linux, utilize a Implementação Zip
  • Se for fornecido um ficheiro War, utilize War Deploy
  • Se for fornecido um ficheiro Jar, utilize Run From Package
  • Para todas as outras pessoas, utilize Run From Zip (via Zip Deploy)

Num agente não Windows (para qualquer tipo de serviço de aplicações), a tarefa depende das APIs REST do Kudu para implementar a aplicação Web.

Kudu REST APIs

As APIs REST do Kudu funcionam em agentes de automatização do Windows ou linux quando o destino é a Aplicação Web no Windows, a Aplicação Web no Linux (origem incorporada) ou a Aplicação de Funções. A tarefa utiliza o Kudu para copiar ficheiros para o Serviço de Aplicações do Azure.

Implementação do Zip

Cria um pacote de implementação .zip do pacote ou pasta escolhido. Em seguida, os conteúdos do ficheiro são implementados na pasta wwwroot da aplicação de funções no Serviço de Aplicações do Azure. Esta opção substitui todos os conteúdos existentes na pasta wwwroot. Para obter mais informações, veja Implementação zip para Funções do Azure.

RunFromPackage

Cria o mesmo pacote de implementação que o Zip Deploy. No entanto, em vez de implementar ficheiros na pasta wwwroot, todo o pacote é montado pelo Funções do Azure runtime. Com esta opção, os ficheiros na pasta wwwroot tornam-se só de leitura. Para mais informações, veja Executar as suas Funções do Azure a partir de um ficheiro de pacote.

Erro: Não foi possível obter o token de acesso para o Azure. Verifique se o Principal de Serviço utilizado é válido e não expirou.

A tarefa utiliza o principal de serviço na ligação de serviço para autenticar com o Azure. Se o principal de serviço tiver expirado ou não tiver permissões para o Serviço de Aplicações, a tarefa falhará com este erro. Verifique a validade do principal de serviço utilizado e se este está presente no registo da aplicação. Para obter mais informações, veja Utilizar o controlo de acesso baseado em funções para gerir o acesso aos recursos da subscrição do Azure. Esta publicação de blogue também contém mais informações sobre a utilização da autenticação do principal de serviço.

Erro SSL

Se quiser utilizar um certificado no Serviço de Aplicações, o certificado tem de ser assinado por uma autoridade de certificação fidedigna. Se a sua aplicação Web der erros de validação do certificado, é provável que esteja a utilizar um certificado autoassinado. Defina uma variável com o nome VSTS_ARM_REST_IGNORE_SSL_ERRORS para o valor true no pipeline de compilação ou versão para resolver o erro.

Uma versão fica pendente durante muito tempo e falha

Este problema pode ser o resultado de uma capacidade insuficiente no seu plano de Serviço de Aplicações. Para resolver este problema, pode aumentar verticalmente a instância Serviço de Aplicações para aumentar a CPU, a RAM e o espaço em disco disponíveis ou experimentar com um plano de Serviço de Aplicações diferente.

Códigos de erro 5xx

Se estiver a ver um erro de 5xx , verifique o estado do serviço do Azure.

De repente, a Função do Azure deixou de funcionar

Funções do Azure poderá deixar de funcionar se tiver passado mais de um ano desde a última implementação. Se implementar com "RunFromPackage" em "deploymentMethod", é gerada uma SAS com uma data de expiração de 1 ano e definida como o valor de "WEBSITE_RUN_FROM_PACKAGE" na configuração da aplicação. Funções do Azure utiliza esta SAS para referenciar o ficheiro de pacote para execução de funções, pelo que, se a SAS tiver expirado, a função não será executada. Para resolver este problema, implemente 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 se encontra publicado como um artefacto na compilação ou numa fase anterior e transferido na tarefa atual.

Erro: a opção Publicar com a implementação zip não é suportada para o tipo de pacote msBuild

Os pacotes Web criados através da tarefa MSBuild (com argumentos predefinidos) têm uma estrutura de pasta aninhada que só pode ser implementada corretamente pela Implementação Web. A opção de implementação publish-to-zip não pode ser utilizada para implementar esses pacotes. Para converter a estrutura de embalagem, siga estes passos:

  1. Na tarefa Criar solução, altere os Argumentos msBuild para /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Captura de ecrã que mostra os valores da Solução de compilação.

  2. Adicione uma tarefa Arquivar e altere os valores da seguinte forma:

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

    2. Desmarque a caixa de verificação Nome da pasta raiz de Prepend para arquivar caminhos :

      Captura de ecrã que mostra os valores de Arquivo.

FAQs

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

A tarefa da Aplicação Web do Azure (AzureWebApp) é a forma mais simples de implementar numa Aplicação Web do Azure. Por predefinição, a sua implementação ocorre à aplicação raiz na Aplicação Web do Azure.

A tarefa Serviço de Aplicações do Azure Deploy (AzureRmWebAppDeployment) pode processar cenários mais personalizados, tais como:

Nota

As transformações de ficheiros e a substituição de variáveis também são suportadas pela tarefa de Transformação de Ficheiros separada para utilização nos Pipelines do Azure. Pode utilizar a tarefa Transformação de Ficheiros para aplicar transformações de ficheiros e substituições de variáveis em quaisquer ficheiros de configuração e parâmetros.

A implementação de aplicações Web no Windows é concluída com êxito, mas a aplicação não está a funcionar

Isto pode dever-se ao facto de web.config não estar presente na sua aplicação. Pode adicionar um ficheiro web.config à sua origem ou gerar automaticamente um através das Definições de Aplicação e Configuração.

  • Clique na tarefa e aceda a Gerar parâmetros de web.config para aplicações Python, Node.js, Go e Java.

    Captura de ecrã a mostrar a caixa de diálogo Gerar parâmetros web.config.

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

    Captura de ecrã a mostrar a caixa de diálogo pendente.

  • Selecione o tipo de aplicação no menu pendente.

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

A implementação de aplicações Web no Ambiente do Serviço de Aplicações (ASE) não está a funcionar

  • Certifique-se de que o agente de compilação do Azure DevOps está na mesma VNET (a sub-rede pode ser diferente) da Balanceador de Carga Interna (ILB) do ASE. Isto permitirá ao agente solicitar código do Azure DevOps e implementar no ASE.
  • Se estiver a utilizar o Azure DevOps, o agente não precisa de estar acessível a partir da Internet, mas apenas precisa de acesso de saída para ligar ao Serviço de DevOps do Azure.
  • Se estiver a utilizar o TFS/Azure DevOps Server implementado num Rede Virtual, o agente pode estar completamente isolado.
  • O agente de compilação tem de ser configurado com a configuração DNS da Aplicação Web para a que precisa de implementar. Os recursos privados no Rede Virtual não têm entradas no DNS do Azure, pelo que tem de ser adicionado ao ficheiro do anfitrião no computador do agente.
  • Se for utilizado um certificado autoassinado para a configuração do ASE, a opção -allowUntrusted tem de ser definida na tarefa de implementação do MSDeploy. Também é recomendado definir a variável VSTS_ARM_REST_IGNORE_SSL_ERRORS como true. Se for utilizado um certificado de uma autoridade de certificação para a configuração do ASE, tal não deve ser necessário.

Como devo configurar a minha ligação de serviço?

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

Como devo configurar a implementação de tarefas Web com o Application Insights?

Quando estiver a implementar num Serviço de Aplicações, se tiver o Application Insights configurado e tiver ativado Remove additional files at destinationo , também tem de ativar Exclude files from the App_Data folder. Ativar esta opção mantém a extensão do Application Insights num estado seguro. Este passo é necessário porque o WebJob contínuo do Application Insights está instalado na pasta App_Data.

Como devo configurar o meu agente se estiver atrás de um proxy enquanto estou a implementar no Serviço de Aplicações?

Se o agente autoalojado necessitar de um proxy Web, pode informar o agente sobre o proxy durante a configuração. Fazê-lo permite que o agente se ligue aos Pipelines do Azure ou Azure DevOps Server através do proxy. Saiba mais sobre como executar um agente autoalojado atrás de um proxy Web.

Exemplos

Segue-se um fragmento YAML de exemplo para implementar a aplicação Web na Web do Azure Serviço de Aplicações 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 implementar a Aplicação Web no Linux, adicione o parâmetro e defina-o appType como appType: webAppLinux.

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

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

Requisitos

Requisito Description
Tipos de pipeline YAML, Compilação clássica, Versão clássica
É executado em Agente, DeploymentGroup
Exigências Nenhuma
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes na tarefa.
Restrições de comandos Qualquer
Variáveis de tabelas definidas Qualquer
Versão do agente 2.104.1 ou superior
Categoria da tarefa Implementação