Partilhar via


AzureFunctionApp@2 - Funções do Azure Implementar tarefa v2

Atualize uma aplicação de funções com aplicações Web baseadas em .NET, Python, JavaScript, PowerShell e Java.

Syntax

# 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|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. 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.
# 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 - Ligação Resource Manager do Azure
Alias de entrada: azureSubscription. string. Obrigatório.

Selecione a subscrição do Azure Resource Manager para a implementação.


appType - Tipo de aplicação
string. Obrigatório. Valores permitidos: functionApp (Aplicação de Funções no Windows), functionAppLinux (Aplicação de Funções no Linux).

Selecione o tipo de Aplicação de Funções do Azure para a implementação.


appName - Funções do Azure Nome da aplicação
string. Obrigatório.

Especifique o nome de uma Aplicação Funções do Azure existente. As Aplicações de Funções listadas serão baseadas no tipo de aplicação selecionado.


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

Implementa num bloco de implementação ou Serviço de Aplicações do Azure Ambiente existente. Para ambos os destinos, a tarefa precisa de um nome de grupo de recursos.

Se o destino de implementação for um bloco, será predefinido para 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 do Serviço de Aplicações.

Introduz ou seleciona o grupo de Recursos do Azure que contém o Serviço de Aplicações do Azure especificado acima.


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

Introduz ou seleciona um bloco existente, excluindo o bloco Produção.


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

Introduza ou Selecione um Bloco existente que não seja o bloco 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 ou um ficheiro zip comprimido. São suportadas variáveis (Versão de Compilação | ) e carateres universais. Por exemplo, $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - Pilha de tempo de execução
string. Opcional. Utilize quando appType = functionAppLinux. Valores permitidos: DOTNET|6.0, DOTNET-ISOLATED|6.0, DOTNET-ISOLATED|7.0, DOTNET-ISOLATED|8.0, JAVA|8, JAVA|11, JAVA|21JAVA|17, , NODE|14, NODE|16, NODE|18, NODE|20, , PYTHON|3.8, , PYTHON|3.9, PYTHON|3.10, . PYTHON|3.11

Especifique a arquitetura e a versão em que a sua aplicação de funções será executada. Pode utilizar qualquer uma das versões de runtime suportadas. Valores antigos como DOCKER|microsoft/azure-functions-* são preteridos. Os novos valores estão listados na lista pendente na tarefa assistente. Se existir uma versão mais recente de uma arquitetura disponível nas versões de runtime suportadas , pode especificá-la mesmo que não esteja na lista.


runtimeStack - Pilha de tempo de execução
string. Opcional. Utilize 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.78 (functionapp v3/v4)), PYTHON|3.9 (PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10 (PYTHON|3.10 (functionapp v3/v4)).

Especifique a arquitetura e a versão em que a sua aplicação de funções será executada. Pode utilizar qualquer uma das versões de runtime suportadas. Valores antigos como DOCKER|microsoft/azure-functions-* são preteridos. Os novos valores estão listados na lista pendente na tarefa assistente. Se existir uma versão mais recente de uma arquitetura disponível nas versões de runtime suportadas , pode especificá-la mesmo que não esteja na lista.


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

Introduza as definições da aplicação 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").


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

Especifica o método de implementação da aplicação. As aplicações de Consumo do Linux não suportam esta configuração.


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

Escolhe o método de implementação da aplicação. As aplicações de Consumo do Linux não suportam esta configuração.s


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
URL da aplicação da Aplicação de Funções do Azure selecionada.

Observações

A tarefa Implementação de Funções do Azure é utilizada para atualizar Funções do Azure para implementar Funções no Azure. A tarefa funciona em agentes de Pipelines do Azure em várias plataformas com Windows, Linux ou Mac e utiliza as tecnologias de implementação subjacentes das APIs RunFromPackage, Zip Deploy e Kudu REST.

A tarefa funciona para os idiomas suportados Funções do Azure.

Pré-requisitos para a tarefa

Os seguintes pré-requisitos têm de ser configurados nos computadores de destino para que a tarefa funcione corretamente.

Função do Azure

A tarefa é utilizada para implementar um projeto de Funções do Azure numa Função do Azure existente. A aplicação de Funções do Azure deve existir antes de executar a tarefa. A Aplicação de Funções do Azure pode ser criada a partir do portal do Azure. Em alternativa, a tarefa Azure PowerShell pode ser utilizada para executar scripts do PowerShell do AzureRM para aprovisionar e configurar a aplicação de Funções do Azure.

A tarefa pode ser utilizada para implementar Funções do Azure (Windows/Linux).

Subscrição do Azure

Para implementar no Azure, uma subscrição do Azure tem de estar ligada aos Pipelines do Azure com o separador Serviços na secção Administração de Contas. Adicione a subscrição do Azure a utilizar na definição De Compilação ou Gestão de Versões ao abrir o ecrã Administração de Conta (ícone de engrenagem no canto superior direito do ecrã) e, em seguida, clique no Separador Serviços.

Create o ponto final do serviço ARM e utilize o tipo de ponto final do Azure Resource Manager. Para obter mais detalhes, siga os passos listados na ligação aqui.

A tarefa não funciona com o ponto final de serviço Clássico do Azure e não listará estas ligações nos parâmetros da tarefa.

Métodos de implementação

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

Para alterar a opção de implementação baseada em pacotes numa 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 utiliza uma tecnologia de implementação adequada. As tecnologias de implementação utilizadas pelas tarefas são as seguintes:

Por predefinição, a tarefa tenta selecionar a tecnologia de implementação adequada com base no pacote de entrada, no tipo Serviço de Aplicações e no SO do agente.

  • Se for fornecido um script pós-implementação, utilize a Implementação Zip.
  • Se o tipo de Serviço de Aplicações for Aplicação Web no Linux, utilize a Implementação Zip.
  • Se for fornecido um ficheiro .war, utilize War Deploy.
  • Se for fornecido um ficheiro .jar, utilize Run-From-Zip.
  • Para todas as outras tarefas, utilize Executar a Partir do Pacote (através da Implementação Zip).

Num agente não Windows (para qualquer tipo de Serviço de Aplicações), a tarefa baseia-se na API REST do Kudu para implementar a aplicação Web.

Kudu REST API

A API REST do Kudu funciona em agentes de automatização do Windows e do Linux quando o destino é uma Aplicação Web no Windows, uma Aplicação Web no Linux (origem incorporada) ou uma 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

O Zip Deploy cria um pacote de implementação .zip a partir do pacote ou pasta escolhido. Em seguida, implementa o conteúdo do ficheiro na pasta wwwroot da aplicação de funções de nome Serviço de Aplicações no Azure. Esta opção substitui todo o conteúdo existente na pasta wwwroot. Para obter mais informações, veja Implementação zip para Funções do Azure.

Executar a partir do Pacote

Executar a Partir do Pacote cria o mesmo pacote de implementação que o Zip Deploy. Em vez de implementar ficheiros na pasta wwwroot, o runtime das Funções monta todo o pacote. Quando utiliza 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.

Resolução de problemas

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 mensagem 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 tentar 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 seu serviço do Azure.

A Função do Azure deixou subitamente de funcionar

Funções do Azure podem deixar subitamente de funcionar se já passar 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 publicar para zip não pode ser utilizada para implementar esses pacotes. Para converter a estrutura de empacotamento, 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 Arquivo 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 pré-final para arquivar caminhos :

      Captura de ecrã que mostra os valores de Arquivo.

A implementação da aplicação de funções no Windows é bem-sucedida, mas a aplicação não funciona

Este problema pode ocorrer se um ficheiro web.config não estiver 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 da tarefa.

  1. Selecione a tarefa e aceda a Gerar parâmetros de web.config para aplicações Python, Node.js, Go e Java:

    Captura de ecrã que mostra a secção Gerar parâmetros de web.config.

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

    Captura de ecrã a mostrar os parâmetros Gerar web.config.

  3. Selecione o tipo de aplicação na lista Arquitetura de aplicações .

  4. Selecione OK. Ao fazê-lo, irá preencher os parâmetros de web.config necessários para gerar o ficheiro de web.config.

FAQs

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

Não consigo implementar numa Ambiente do Serviço de Aplicações interna com uma ligação de serviço do Azure Resource Manager e um agente alojado na Microsoft

Por predefinição, um agente alojado na Microsoft não funcionará com um Ambiente do Serviço de Aplicações. Em vez disso, tem de configurar um agente privado numa máquina virtual que esteja na mesma rede virtual que a Ambiente do Serviço de Aplicações. Além disso, defina uma zona DNS privada para ativar a comunicação entre os recursos.

Exemplos

Eis um fragmento YAML de exemplo que implementa 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 implementar uma função no Linux, adicione o parâmetro e defina-o appType como appType: functionAppLinux. Se não especificar um valor, functionApp é a predefinição.

Para especificar explicitamente o método de implementação como Zip Deploy, adicione o parâmetro deploymentMethod: zipDeploy. Outro valor suportado para este parâmetro é runFromPackage. Se não especificar um valor, auto é a predefinição.

Para obter instruções que mostram como criar um pipeline ci/CD, veja Criar e implementar Java para Funções do Azure.

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