Partilhar via


AzureFunctionApp@2 - Tarefa Azure Functions Deploy v2

Atualize um aplicativo funcional com aplicativos Web baseados em .NET, Python, JavaScript, PowerShell, 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.

Insumos

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 (Function App no Windows), functionAppLinux (Function App no Linux).

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


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

Defina como true se o aplicativo de função estiver em um plano Flex Consumption.


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

Especifique o nome de um Aplicativo do Azure Functions existente. Os Aplicativos de função 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 de implantação for um slot, ele assumirá como padrão o slot de 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 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 de implantação for um slot, ele assumirá como padrão o slot de 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 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 de implantação é um slot de implantação ou um Ambiente do Serviço de Aplicativo.

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


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

Entra ou seleciona um slot existente, excluindo o slot Produção.


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

Insira ou selecione um slot existente diferente do 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 ou um arquivo zip compactado. Variáveis ( Build | Release) e curingas são suportadas. Por exemplo, $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - pilha de tempo de execução
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ção será executado. Você pode usar qualquer uma das versões de tempo de execução suportadas. Valores antigos como DOCKER|microsoft/azure-functions-* são preteridos. Novos valores são listados na lista suspensa no assistente de tarefas . Se houver uma versão mais recente de uma estrutura disponível no versões de tempo de execução suportadas você poderá especificá-la mesmo que ela não esteja na lista.

Observação

Esse valor atualmente não atualiza o linuxFxVersion 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 - pilha de tempo de execução
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ção será executado. Você pode usar qualquer uma das versões de tempo de execução suportadas. Valores antigos como DOCKER|microsoft/azure-functions-* são preteridos. Novos valores são listados na lista suspensa no assistente de tarefas . Se houver uma versão mais recente de uma estrutura disponível no versões de tempo de execução suportadas você poderá especificá-la mesmo que ela não esteja na lista.


appSettings - Configurações do aplicativo
string.

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

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


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

Especifica o método de implantação para o aplicativo. As aplicações de Consumo Linux não suportam esta configuração.


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

Especifica o método de implantação para o aplicativo. As aplicações de Consumo Linux não suportam esta configuração.


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

Escolhe o método de implantação para o aplicativo. As aplicações de Consumo Linux não suportam esta configuração.s


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
URL do Aplicativo do Aplicativo de Função do Azure selecionado.

Comentários

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

A tarefa funciona para o Azure Functions idiomas suportados.

Pré-requisitos para a tarefa

Os pré-requisitos a seguir precisam ser configurados na(s) máquina(s) 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 do Azure existente. O aplicativo Azure Function deve existir antes de executar a tarefa. O Aplicativo de Função do Azure pode ser criado a partir do portal do Azure. Como alternativa, o de tarefas do Azure PowerShell pode ser usado para executar scripts do PowerShell AzureRM para provisionar e configurar o aplicativo Azure Function.

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

Subscrição do Azure

Para implantar no Azure, uma assinatura do Azure deve ser vinculada aos Pipelines do Azure usando a guia Serviços na seção Administração de Conta. Adicione a assinatura do Azure para usar na definição de Build ou Release Management abrindo a tela Administração de Conta (ícone de engrenagem no canto superior direito da tela) e clique na guia Serviços.

Crie o ponto de extremidade do 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 do 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 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 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 de 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 Zip Deploy.
  • 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 que não seja do 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 Kudu REST API funciona em agentes de automação Windows e Linux quando o destino é um aplicativo Web no Windows, um aplicativo Web no Linux (fonte interna) ou um aplicativo funcional. A tarefa usa o Kudu para copiar arquivos para o Serviço de Aplicativo do Azure.

Implantação Zip

O Zip Deploy cria um pacote de implantação .zip a partir do pacote ou pasta escolhidos. Em seguida, ele implanta o conteúdo do arquivo na pasta wwwroot do aplicativo de função de nome do Serviço de Aplicativo no 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.

Executar a partir do pacote

Run From Package cria o mesmo pacote de implantação que o Zip Deploy. Em vez de implantar arquivos na pasta wwwroot, o tempo de execução do Functions monta o pacote inteiro. Quando você usa essa opção, os arquivos na pasta wwwroot se tornam somente leitura. Para obter mais informações, consulte executar o Azure Functions a partir de um arquivo de pacote.

Solução de 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 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.

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

Esse problema pode ocorrer se um arquivo de 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 Definiçõ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 de web.config.

  2. Selecione o botão Mais (...) em Gerar parâmetros 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 Application framework.

  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?

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.

Não consigo implantar em um Ambiente de Serviço de Aplicativo interno 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 permitir a comunicação entre os recursos.

Exemplos

Aqui está um trecho YAML de exemplo que implanta 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 suportado para este 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 Compilar e implantar Java no Azure Functions.

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