Compartilhar via


AzureFunctionApp@2 – Tarefa Implantar v2 do Azure Functions

Atualize um aplicativo de funções com aplicativos Web baseados em .NET, Python, JavaScript, PowerShell e Java.

Sintaxe

# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    #isFlexConsumption: false # boolean. Is Function App on Flex Consumption Plan. Default: false.
    appName: # string. Required. Azure Functions App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "" && isFlexConsumption = false. 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: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux && isFlexConsumption = false. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    appName: # string. Required. Azure Functions 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: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.

Entradas

connectedServiceNameARM - de conexão do Azure Resource Manager
Alias de entrada: azureSubscription. string. Necessário.

Selecione a assinatura do Azure Resource Manager para a implantação.


appType - tipo de aplicativo
string. Necessário. Valores permitidos: functionApp (Aplicativo de Funções no Windows), functionAppLinux (Aplicativo de Funções no Linux).

Selecione o tipo de Aplicativo de Funções do Azure para a implantação.


isFlexConsumption - é o aplicativo de funções no plano de consumo flex
boolean. Valor padrão: false.

Defina como true se o aplicativo de funções estiver em um plano de consumo flex .


appName - nome do aplicativo do Azure Functions
string. Necessário.

Especifique o nome de um aplicativo existente do Azure Functions. Os Aplicativos de Funções listados serão baseados no tipo de aplicativo selecionado.


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

Implanta em um slot de implantação existente ou no 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, ele usará o slot de de produção padrã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 de produção e especifique o nome do grupo de recursos.


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

Implanta em um slot de implantação existente ou no 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, ele usará o slot de de produção padrã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 de 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.

Insere ou seleciona o grupo de recursos do Azure que contém o Serviço de Aplicativo do Azure especificado acima.


de slot do
string. Necessário quando deployToSlotOrASE = true. Valor padrão: production.

Insere ou seleciona um slot existente, excluindo o slot de produção.


de slot do
string. Necessário quando deployToSlotOrASE = true. Valor padrão: production.

Insira ou selecione um slot existente que não seja o slot de produção.


pacote package - ou de pasta
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 ou um arquivo zip compactado. Há suporte para variáveis (build | versão) e caracteres curinga. Por exemplo, $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - de pilha de runtime
string. Opcional. Use quando appType = functionAppLinux && isFlexConsumption = false. Valores permitidos: DOTNET|6.0, DOTNET-ISOLATED|6.0, DOTNET-ISOLATED|7.0, DOTNET-ISOLATED|8.0, JAVA|8, JAVA|11, JAVA|17, JAVA|21, NODE|14, NODE|16, NODE|18, NODE|20, PYTHON|3.8, PYTHON|3.9, PYTHON|3.10, PYTHON|3.11.

Especifique a estrutura e a versão em que seu aplicativo de funções será executado. Você pode usar qualquer uma das versões de runtime com suporte . Valores antigos como DOCKER|microsoft/azure-functions-* são preteridos. Novos valores são listados na lista suspensa nodo assistente de tarefa . Se houver uma versão mais recente de uma estrutura disponível no versões de runtime com suporte você poderá especificá-la mesmo que ela não esteja na lista.

Nota

Atualmente, esse valor não atualiza o linuxFxVersion em que o site está sendo executado. Isso significa que você não pode atualizar a pilha do Nó 18 para o Nó 20. Atualmente, a tarefa atualiza apenas as configurações do aplicativo.


runtimeStack - de pilha de runtime
string. Opcional. Use quando appType = functionAppLinux. Valores permitidos: DOTNET|2.2 (DOTNET|2.2 (functionapp v2)), DOTNET|3.1 (DOTNET|3.1 (functionapp v3)), DOTNET|6.0 (DOTNET|6.0 (functionapp v4)), DOTNET-ISOLATED|7.0 (DOTNET-ISOLATED|7.0 (functionapp v4)), JAVA|8 (JAVA|8 (functionapp v2/v3/v4)), JAVA|11 (JAVA|11 (functionapp v3/v4)), NODE|8 (NODE|8 (functionapp v2)), NODE|10 (NODE|10 (functionapp v2/v3)), NODE|12 (NODE|12 (functionapp v3)), NODE|14 (NODE|14 (functionapp v3/v4)), NODE|16 (NODE|16 (functionapp v4)), NODE|18 (NODE|18 (functionapp v4)), PYTHON|3.6 (PYTHON|3.6 (functionapp v2/v3)), PYTHON|3.7 (PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8 (PYTHON|3.8 (functionapp v3/v4)), PYTHON|3.9 (PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10 (PYTHON|3.10 (functionapp v3/v4)).

Especifique a estrutura e a versão em que seu aplicativo de funções será executado. Você pode usar qualquer uma das versões de runtime com suporte . Valores antigos como DOCKER|microsoft/azure-functions-* são preteridos. Novos valores são listados na lista suspensa nodo assistente de tarefa . Se houver uma versão mais recente de uma estrutura disponível no versões de runtime com suporte você poderá especificá-la mesmo que ela não esteja na lista.


configurações do aplicativo appSettings -
string.

Insira as configurações do aplicativo 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").

Para obter mais informações sobre as configurações do aplicativo, consulte Variáveis de ambiente e configurações de aplicativo no Serviço de Aplicativo do Azure.


método de implantação deploymentMethod -
string. Necessário quando appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Valores permitidos: auto (detecção automática), zipDeploy (implantação zip), runFromPackage (implantação zip com run from package). Valor padrão: auto.

Especifica o método de implantação para o aplicativo. Os aplicativos de Consumo do Linux não dão suporte a essa configuração.


método de implantação deploymentMethod -
string. Necessário quando appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Valores permitidos: auto (detecção automática), zipDeploy (implantação zip), runFromPackage (implantação zip com run from package). Valor padrão: auto.

Especifica o método de implantação para o aplicativo. Os aplicativos de Consumo do Linux não dão suporte a essa configuração.


método de implantação deploymentMethod -
string. Necessário quando appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Valores permitidos: auto (detecção automática), zipDeploy (implantação zip), runFromPackage (implantação zip com run from package). Valor padrão: auto.

Escolhe o método de implantação para o aplicativo. Os aplicativos de Consumo do Linux não dão suporte a essa configuração.s


Opções de controle de tarefa

Todas as tarefas têm opções de controle além de suas entradas de tarefa. 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
URL do Aplicativo do Aplicativo de Funções do Azure selecionado.

Observações

A tarefa Implantação de Funções do Azure é usada para atualizar o Azure Functions para implantar Functions no Azure. A tarefa funciona em agentes do Azure Pipelines multiplataforma que executam o Windows, Linux ou Mac e usa as tecnologias de implantação subjacentes das APIs REST RunFromPackage, Zip Deploy e Kudu.

A tarefa funciona para os idiomas compatíveis com o do Azure Functions.

Pré-requisitos para a tarefa

Os pré-requisitos a seguir precisam ser configurados nos computadores de destino para que a tarefa funcione corretamente.

Função do Azure

A tarefa é usada para implantar um projeto do Azure Functions em uma função existente do Azure. O aplicativo de funções do Azure deve existir antes de executar a tarefa. O Aplicativo de Funções do Azure pode ser criado no portal do Azure. Como alternativa, a tarefa Azure PowerShell pode ser usada para executar scripts do PowerShell do AzureRM para provisionar e configurar o aplicativo de funções do Azure.

A tarefa pode ser usada para implantar do Azure Functions (Windows/Linux).

Assinatura do Azure

Para implantar no Azure, uma assinatura do Azure precisa ser vinculada ao Azure Pipelines usando a guia Serviços na seção Administração de Conta. Adicione a assinatura do Azure a ser usada na definição de Build ou Gerenciamento de Versão abrindo a tela Administração da Conta (ícone de engrenagem no canto superior direito da tela) e clique na Guia Serviços.

Crie o ponto de extremidade de serviço ARM e use tipo de ponto de extremidade do Azure Resource Manager. Para obter mais detalhes, siga as etapas listadas no link aqui.

A tarefa não funciona com o ponto de extremidade de serviço clássico do Azure e não listará essas conexões nos parâmetros da tarefa.

Métodos de implantação

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

Para alterar a opção de implantação baseada em pacote em uma 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 usa uma tecnologia de implantação adequada. As tecnologias de implantação usadas pelas tarefas são as seguintes:

Por padrão, a tarefa tenta selecionar a tecnologia de implantação apropriada com base no pacote de entrada, no tipo do Serviço de Aplicativo e no sistema operacional do agente.

  • Se um script pós-implantação for fornecido, use Zip Deploy.
  • Se o tipo de Serviço de Aplicativo for Aplicativo Web no Linux, use a Implantação zip.
  • Se um arquivo .war for fornecido, use War Deploy.
  • Se um arquivo .jar for fornecido, use Run-From-Zip.
  • Para todas as outras tarefas, use Run From Package (via Zip Deploy).

Em um agente não Windows (para qualquer tipo de Serviço de Aplicativo), a tarefa depende do da API REST do Kudu para implantar o aplicativo Web.

Kudu REST API

O da API REST do Kudu funciona em agentes de automação do Windows e do Linux quando o destino é um aplicativo Web no Windows, um aplicativo Web no Linux (origem interna) ou um aplicativo de funções. A tarefa usa o Kudu para copiar arquivos para o Serviço de Aplicativo do Azure.

Implantação zip

A implantação zip cria um pacote de implantação .zip do pacote ou pasta escolhido. Em seguida, ele implanta o conteúdo do arquivo na pasta wwwroot do aplicativo de funções de nome do Serviço de Aplicativo no 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.

Executar do pacote

Executar do Pacote cria o mesmo pacote de implantação que o Zip Deploy. Em vez de implantar arquivos na pasta wwwroot, o runtime do Functions monta todo o pacote. Quando você usa 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.

Solucionando problemas

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:

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

    captura de tela que mostra os valores da solução Build.

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

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

    2. Desmarque o nome da pasta raiz Prepend para arquivar caminhos caixa de seleção:

      captura de tela que mostra os valores de Arquivo Morto.

A implantação do aplicativo de funções no Windows é bem-sucedida, mas o aplicativo não funciona

Esse problema poderá ocorrer se um arquivo web.config não estiver presente em seu aplicativo. Você pode adicionar um arquivo web.config à sua origem ou gerar automaticamente um usando o de Configurações de Aplicativo e Configuração da tarefa.

  1. Selecione a tarefa e vá para Gerar parâmetros de web.config para aplicativos Python, Node.js, Go e Java:

    Captura de tela que mostra a seção Gerar parâmetros web.config.

  2. Selecione o botão Mais (...) em Gerar parâmetros de web.config para aplicativos Python, Node.js, Go e Java para editar os parâmetros:

    Captura de tela que mostra os parâmetros Gerar web.config.

  3. Selecione o tipo de aplicativo na lista de da estrutura do aplicativo .

  4. Selecione OK. Isso preencherá os parâmetros de web.config necessários para gerar o arquivo web.config.

Perguntas frequentes

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.

Não consigo implantar em um Ambiente interno do Serviço de Aplicativo usando uma conexão de serviço do Azure Resource Manager e um agente hospedado pela Microsoft

Por design, um agente hospedado pela Microsoft não funcionará com um Ambiente do Serviço de Aplicativo. Em vez disso, você precisa configurar um agente privado em uma máquina virtual que esteja na mesma rede virtual que o Ambiente do Serviço de Aplicativo. Além disso, defina uma zona DNS privada para habilitar a comunicação entre os recursos.

Exemplos

Aqui está um snippet yaml de exemplo que implanta as funções do Azure no Windows:


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

steps:
- task: AzureFunctionApp@2
  displayName: Azure Function App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplefunctionapp
    appType: functionApp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Para implantar uma função no Linux, adicione o parâmetro appType e defina-o como appType: functionAppLinux. Se você não especificar um valor, functionApp será o padrão.

Para especificar explicitamente 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 você não especificar um valor, auto será o padrão.

Para obter um passo a passo que mostra como criar um pipeline de CI/CD, consulte Criar e implantar Java no Azure Functions.

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.104.1 ou superior
Categoria de tarefa Implantar