AzureWebApp@1 – Tarefa do Aplicativo Web do Azure v1
Essa 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: # 'DOTNETCORE:9.0' | 'DOTNETCORE:8.0' | 'DOTNETCORE:7.0' | 'DOTNETCORE:6.0' | 'NODE:20-lts' | 'NODE:18-lts' | 'NODE:16-lts' | 'PYTHON:3.12' | 'PYTHON:3.11' | 'PYTHON:3.10' | 'PYTHON:3.9' | 'PYTHON:3.8' | 'PHP:8.3' | 'PHP:8.2' | 'PHP:8.1' | 'PHP:8.0' | 'JAVA:21-java21' | 'JAVA:17-java17' | 'JAVA:11-java11' | 'JAVA:8-jre8' | 'JBOSSEAP:8-java17' | 'JBOSSEAP:8-java11' | 'JBOSSEAP:7-java17' | 'JBOSSEAP:7-java11' | 'JBOSSEAP:7-java8' | 'TOMCAT:10.1-java21' | 'TOMCAT:10.1-java17' | 'TOMCAT:10.1-java11' | 'TOMCAT:10.0-java17' | 'TOMCAT:10.0-java11' | 'TOMCAT:10.0-jre8' | 'TOMCAT:9.0-java21' | 'TOMCAT:9.0-java17' | 'TOMCAT:9.0-java11' | 'TOMCAT:9.0-jre8' | 'TOMCAT:8.5-java11' | 'TOMCAT:8.5-jre8'. 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.
#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.
Entradas
azureSubscription
-
assinatura do Azure
string
. Obrigatório
Especifica o de conexão de assinatura do Azure Resource Manager para a implantação.
appType
-
tipo de aplicativo
string
. Obrigatório Valores permitidos: webApp
(Aplicativo Web no Windows), webAppLinux
(Aplicativo Web no Linux).
Especifica o tipo de aplicativo Web do Azure.
appName
-
nome do aplicativo
string
. Obrigató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 de 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 da 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 da 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 da 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.
de slot do
string
. Necessário quando deployToSlotOrASE = true
. Valor padrão: production
.
Especifica um slot existente, excluindo o slot de produção.
pacote package
- ou de pasta
string
. Obrigató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 de guerra. Há suporte para variáveis (build | versão) e caracteres curinga. 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 para <appname>.azurewebsites.net/<warpackagename>
.
Se ROOT for inserido, o pacote será implantado para <appname>.azurewebsited.net
.
Em todas as outras instâncias, ele é implantado para <appname>.azurewebsited.net/<customWarName>
.
runtimeStack
-
de pilha de runtime
string
. Opcional. Use quando appType = webAppLinux
. Valores permitidos: DOTNETCORE:9.0
(.NET 9.0), DOTNETCORE:8.0
(.NET 8.0), DOTNETCORE:7.0
(.NET 7.0), DOTNETCORE:6.0
(.NET 6.0), NODE:20-lts
(Nó 20 LTS), NODE:18-lts
(Nó 18 LTS), NODE:16-lts
(Nó 16 LTS), PYTHON:3.12
(Python 3.12), PYTHON:3.11
PYTHON:3.12
(Python 3.11), PYTHON:3.10
(Python 3.10), PYTHON:3.9
(Python 3.9), PYTHON:3.8
(Python 3.8), PHP:8.3
(PHP 8.3), PHP:8.2
(PHP 8.2), PHP:8.1
(PHP 8.1), PHP:8.0
(PHP 8.0), JAVA:21-java21
(Java 21), JAVA:17-java17
(Java 17), JAVA:11-java11
(Java 11), JAVA:8-jre8
(Java 8), JBOSSEAP:8-java17
(JBoss EAP 8 (Java 17)), JBOSSEAP:8-java11
(JBoss EAP 8 (Java 11)), JBOSSEAP:7-java17
(JBoss EAP 7 (Java 17)), JBOSSEAP:7-java11
(JBoss EAP 7 (Java 7)11)), JBOSSEAP:7-java8
(JBoss EAP 7 (Java 8)), TOMCAT:10.1-java21
(Tomcat 10.1 (Java 21)), TOMCAT:10.1-java17
(Tomcat 10.1 (Java 17)), TOMCAT:10.1-java11
(Tomcat 10.1 (Java 11)), TOMCAT:10.0-java17
(Tomcat 10.0 (Java 17)), TOMCAT:10.0-java11
(Tomcat 10.0 (Java 11)), TOMCAT:10.0-jre8
(Tomcat 10.0 (Java 8)), TOMCAT:9.0-java21
(Tomcat 9.0 (Java 21)), TOMCAT:9.0-java17
(Tomcat 9.0 (Java 17)), TOMCAT:9.0-java11
(Tomcat 9.0 (Java 11)), TOMCAT:9.0-jre8
(Tomcat 9.0 (Java 8)), TOMCAT:8.5-java11
(Tomcat 8.5 (Java 11)), TOMCAT:8.5-jre8
(Tomcat 8.5 (Java 8)).
O Aplicativo Web no Linux oferece duas opções diferentes para publicar seu aplicativo: implantação de imagem personalizada (Aplicativo Web para Contêineres) e implantação de aplicativo com uma imagem de plataforma interna (Aplicativo Web no Linux). Esse parâmetro só está disponível quando aplicativo Web Linux é selecionado como um tipo de aplicativo na tarefa.
runtimeStack
-
de pilha de runtime
string
. Opcional. Use quando appType = webAppLinux
.
O Aplicativo Web no Linux oferece duas opções diferentes para publicar seu aplicativo: implantação de imagem personalizada (Aplicativo Web para Contêineres) e implantação de aplicativo com uma imagem de plataforma interna (Aplicativo Web no Linux). Esse parâmetro só está disponível quando aplicativo Web Linux é selecionado como um tipo de aplicativo na tarefa.
de comando de inicialização do
string
. Opcional. Use quando appType = webAppLinux
.
Especifica o comando de inicialização.
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 de acordo com a 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. Esse recurso de edição é apenas para o gerado web.config.
configurações do aplicativo appSettings
-
string
.
Especifique as configurações do aplicativo Web usando a sintaxe -key value
(por exemplo: -Port 5000
-RequestTimeout 5000
-WEBSITE_TIME_ZONE
). Coloque os valores que contêm espaços entre aspas duplas (por exemplo: "Eastern Standard Time"
).
configurações de configuração configurationStrings
-
string
.
Especifique as configurações do aplicativo Web usando a sintaxe -key value
(por exemplo: -phpVersion 5.6
-linuxFxVersion: node|6.11
). Coloque os valores que contêm espaços entre aspas duplas.
método de implantação deploymentMethod
-
string
. Necessário quando appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar
. Valores permitidos: auto
(detecção automática), zipDeploy
(Implantação zip), runFromPackage
(Executar do Pacote). Valor padrão: auto
.
Escolha o método de implantação para o aplicativo. Os valores aceitáveis são automático, zipDeploy e runFromPackage.
Opções de controle de tarefa
Todas as tarefas têm opções de controle além das suas entradas de tarefas. Para obter mais informações, consulte as opções de Controle de e as propriedades comuns da tarefa.
Variáveis de saída
Essa tarefa define as seguintes variáveis de saída , que você pode consumir em etapas downstream, trabalhos e estágios.
AppServiceApplicationUrl
a URL do aplicativo do Serviço de Aplicativo do Azure selecionado.
Observações
Use essa 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 de designer, expanda Opções adicionais de implantação e habilite Selecionar Método de Implantação.
Com base no tipo do Serviço de Aplicativo do Azure e do 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, considerando o pacote de entrada, o tipo de serviço de aplicativo e o sistema operacional do agente.
- Quando o tipo de serviço de aplicativo for Aplicativo Web no Aplicativo Linux, use implantação zip
- Se um arquivo war for fornecido, use de Implantação de Guerra
- Se um arquivo Jar for fornecido, use Executar do Pacote
- Para todos os outros, use Executar do Zip (via Implantação zip)
Em um agente não Windows (para qualquer tipo de serviço de aplicativo), a tarefa conta com APIs REST do Kudu para implantar o aplicativo Web.
Kudu REST APIs
APIs REST do Kudu funcionam em agentes de automação do Windows ou Linux quando o destino é Aplicativo Web no Windows, Aplicativo Web no Linux (origem interna) ou Aplicativo de Funções. 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 escolhido. O conteúdo do arquivo é implantado na pasta wwwroot do aplicativo de funções no Serviço de Aplicativo do Azure. Essa opção substitui todo o conteúdo existente na pasta wwwroot. Para obter mais informações, consulte implantação 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 runtime do Azure Functions. Com essa opção, os arquivos na pasta wwwroot tornam-se somente leitura. Para obter mais informações, consulte Executar seu Azure Functions 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 o controle de acesso baseado em função para gerenciar o acesso aos recursos de assinatura do Azure. Esta postagem no 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
com o valor true
no pipeline de build ou versão para resolver o erro.
Uma versão trava por muito tempo e, em seguida, falha
Esse problema pode ser resultado de capacidade insuficiente em seu plano do Serviço de Aplicativo. Para resolver esse problema, você pode escalar verticalmente a instância do Serviço de Aplicativo para aumentar a CPU, a RAM e o espaço em disco disponíveis ou tentar com um plano diferente do Serviço de Aplicativo.
5 códigos de erroxx
Se você estiver vendo um erro de 5xx, verifique o status do serviço do Azure.
A Função do Azure de repente parou de funcionar
O Azure Functions poderá parar de funcionar repentinamente se mais de um ano tiver passado desde a última implantação. Se você implantar com "RunFromPackage" em "deploymentMethod", uma SAS com uma data de validade 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 validade de um ano.
Erro: Nenhum pacote encontrado com o padrão especificado
Verifique se o pacote mencionado na tarefa é publicado como um artefato no build ou em um estágio anterior e baixado no trabalho atual.
Erro: não há suporte para publicar usando a opção de implantação zip para o tipo de pacote msBuild
Os pacotes Web criados por meio da tarefa MSBuild (com argumentos padrão) têm uma estrutura de pasta aninhada que pode ser implantada corretamente somente pela Implantação da Web. A opção de implantação publicar para zip não pode ser usada para implantar esses pacotes. Para converter a estrutura de empacotamento, execute estas etapas:
Na tarefa Criar solução, altere o de Argumentos do MSBuild
para : Adicione uma tarefa Arquivar e altere os valores da seguinte maneira:
Altere pasta raiz ou arquivo para arquivar para
$(System.DefaultWorkingDirectory)\\WebAppContent
.Desmarque o nome da pasta raiz Prepend para arquivar caminhos caixa de seleção:
Perguntas frequentes
Qual é a diferença entre as tarefas AzureWebApp
e AzureRmWebAppDeployment
?
A tarefa aplicativo Web do Azure (AzureWebApp
) é a maneira mais simples de implantar em um Aplicativo Web do Azure. Por padrão, sua implantação ocorre com o aplicativo raiz no Aplicativo Web do Azure.
A tarefa implantação do Serviço de Aplicativo do Azure (AzureRmWebAppDeployment
) pode lidar com mais cenários personalizados, como:
- Modificar as configurações dentro de pacotes Web e arquivos de parâmetros XML.
- implantar com a implantação da Web, se você estiver acostumado com o processo de implantação do IIS.
- Implantar em aplicativos virtuais.
- Implante em outros tipos de aplicativo, como aplicativos de contêiner, aplicativos de funções, WebJobs ou aplicativos de API e móveis.
Observação
As transformações de arquivo e a substituição de variável também são compatíveis com a tarefa de Transformação de Arquivo separada 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 ocorrer porque web.config não está presente em seu aplicativo. Você pode adicionar um arquivo web.config à sua origem ou gerar automaticamente um usando configuraçõ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.
Clique no botão mais
...
para editar os parâmetros.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 de aplicativo Web no ASE (Ambiente do Serviço de Aplicativo) não está funcionando
- Verifique se o agente de build 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 efetue pull de código do Azure DevOps e implante no ASE.
- Se você estiver usando o Azure DevOps, o agente não precisará ser 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 servidor TFS/Azure DevOps implantado em uma Rede Virtual, o agente poderá ser completamente isolado.
- O agente de build deve ser configurado com a configuração DNS do aplicativo Web no qual ele precisa implantar. Os recursos privados na Rede Virtual não têm entradas no DNS do Azure, portanto, isso precisa ser adicionado ao arquivo do host no computador 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 para MSDeploy. Também é recomendável definir a variávelVSTS_ARM_REST_IGNORE_SSL_ERRORS
comotrue
. 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?
Essa tarefa requer uma conexão de serviço do Azure Resource Manager.
Como devo configurar a implantação de trabalho web com o Application Insights?
Quando você estiver implantando em um Serviço de Aplicativo, se tiver Application Insights configurado e tiver habilitado Remove additional files at destination
, você 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. Essa 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 por trás de um proxy enquanto estou implantando no Serviço de Aplicativo?
Se o agente auto-hospedado exigir um proxy 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 Servidor do Azure DevOps por meio do proxy. Saiba mais sobre como executar um agente auto-hospedado por trás de um proxy Web.
Exemplos
Veja a seguir um exemplo de snippet de código 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 Aplicativo Web 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 com suporte para esse parâmetro é runFromPackage
.
Se não for especificado, auto
será o valor padrão.
Requisitos
Requisito | Descrição |
---|---|
Tipos de pipeline | YAML, build clássico, versão clássica |
Execuções em | Agent, DeploymentGroup |
de demandas | Nenhum |
recursos | Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho. |
restrições de comando | Qualquer |
variáveis settable | Qualquer |
Versão do agente | 2.209.0 ou superior |
Categoria de tarefa | Implantar |
Requisito | Descrição |
---|---|
Tipos de pipeline | YAML, build clássico, versão clássica |
Execuções em | Agent, DeploymentGroup |
de demandas | Nenhum |
recursos | Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho. |
restrições de comando | Qualquer |
variáveis settable | Qualquer |
Versão do agente | 2.104.1 ou superior |
Categoria de tarefa | Implantar |