AzureFunctionApp@2 - tâche Déployer Azure Functions v2

Mettez à jour une application de fonction avec des applications web basées sur .NET, Python, JavaScript, PowerShell et 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.

Entrées

connectedServiceNameARM - Connexion Azure Resource Manager
Alias d’entrée : azureSubscription. string. Obligatoire.

Sélectionnez l’abonnement Azure Resource Manager pour le déploiement.


appType - Type d’application
string. Obligatoire. Valeurs autorisées : functionApp (Application de fonction sur Windows), functionAppLinux (Application de fonction sur Linux).

Sélectionnez le type d’application de fonction Azure pour le déploiement.


appName - Azure Functions Nom de l’application
string. Obligatoire.

Spécifiez le nom d’une application Azure Functions existante. Les applications de fonction répertoriées seront basées sur le type d’application sélectionné.


deployToSlotOrASE - Déployer sur un emplacement ou un App Service Environment
boolean. facultatif. Utilisez quand appType != "". Valeur par défaut : false.

Déploie sur un emplacement de déploiement ou un environnement Azure App Service existant. Pour les deux cibles, la tâche a besoin d’un nom de groupe de ressources.

Si la cible de déploiement est un emplacement, il s’agit par défaut de l’emplacement de production . Tout autre nom d’emplacement existant peut également être fourni.

Si la cible de déploiement est un Azure App Service Environment, laissez le nom de l’emplacement en production et spécifiez le nom du groupe de ressources.


resourceGroupName - Groupe de ressources
string. Nécessaire lorsque deployToSlotOrASE = true.

Le nom du groupe de ressources est requis lorsque la cible de déploiement est un emplacement de déploiement ou un App Service Environment.

Entre ou sélectionne le groupe de ressources Azure qui contient les Azure App Service spécifiés ci-dessus.


slotName - Fente
string. Nécessaire lorsque deployToSlotOrASE = true. Valeur par défaut : production.

Entre ou sélectionne un emplacement existant, à l’exclusion de l’emplacement De production.


slotName - Fente
string. Nécessaire lorsque deployToSlotOrASE = true. Valeur par défaut : production.

Entrez ou sélectionnez un emplacement existant autre que l’emplacement de production.


package - Package ou dossier
string. Obligatoire. Valeur par défaut : $(System.DefaultWorkingDirectory)/**/*.zip.

Chemin d’accès au package ou dossier qui contient App Service contenu généré par MSBuild ou un fichier zip compressé. Les variables ( Build | Release) et les caractères génériques sont pris en charge. Par exemple : $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - Pile d’exécution
string. facultatif. Utilisez quand appType = functionAppLinux. Valeurs autorisées : DOTNET|6.0, DOTNET-ISOLATED|6.0, DOTNET-ISOLATED|7.0, JAVA|8JAVA|17JAVA|21DOTNET-ISOLATED|8.0NODE|14JAVA|11, . PYTHON|3.11NODE|16NODE|18NODE|20PYTHON|3.8PYTHON|3.9PYTHON|3.10

Spécifiez l’infrastructure et la version sur laquelle votre application de fonction s’exécutera. Vous pouvez utiliser n’importe quelle version du runtime prise en charge. Les anciennes valeurs telles que DOCKER|microsoft/azure-functions-* sont dépréciées. Les nouvelles valeurs sont répertoriées dans la liste déroulante de la assistant de tâche. S’il existe une version plus récente d’une infrastructure disponible dans les versions d’exécution prises en charge , vous pouvez la spécifier même si elle ne figure pas dans la liste.


runtimeStack - Pile d’exécution
string. facultatif. Utilisez quand appType = functionAppLinux. Valeurs autorisées : 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|111 (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)).

Spécifiez l’infrastructure et la version sur laquelle votre application de fonction s’exécutera. Vous pouvez utiliser n’importe quelle version du runtime prise en charge. Les anciennes valeurs telles que DOCKER|microsoft/azure-functions-* sont dépréciées. Les nouvelles valeurs sont répertoriées dans la liste déroulante de la assistant de tâche. S’il existe une version plus récente d’une infrastructure disponible dans les versions d’exécution prises en charge , vous pouvez la spécifier même si elle ne figure pas dans la liste.


appSettings - Paramètres de l’application
string.

Entrez les paramètres de l’application à l’aide de la syntaxe -key value (par exemple :-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Entourez les valeurs qui contiennent des espaces entre guillemets doubles (par exemple : "Eastern Standard Time").


deploymentMethod - Méthode de déploiement
string. Nécessaire lorsque appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Valeurs autorisées : auto (Détection automatique), zipDeploy (Zip Deploy), runFromPackage (Zip Deploy avec Exécuter à partir du package). Valeur par défaut : auto.

Choisit la méthode de déploiement pour l’application. Les applications De consommation Linux ne prennent pas en charge cette configuration.


deploymentMethod - Méthode de déploiement
string. Nécessaire lorsque appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Valeurs autorisées : auto (Détection automatique), zipDeploy (Zip Deploy), runFromPackage (Zip Deploy avec Exécuter à partir du package). Valeur par défaut : auto.

Choisit la méthode de déploiement pour l’application. Les applications De consommation Linux ne prennent pas en charge cette configuration.s


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Cette tâche définit les variables de sortie suivantes, que vous pouvez utiliser dans les étapes, les travaux et les étapes en aval.

AppServiceApplicationUrl
URL d’application de l’application de fonction Azure sélectionnée.

Remarques

La tâche De déploiement de fonction Azure est utilisée pour mettre à jour Azure Functions afin de déployer Functions sur Azure. La tâche fonctionne sur les agents Azure Pipelines multiplateformes exécutant Windows, Linux ou Mac et utilise les technologies de déploiement sous-jacentes des API RunFromPackage, Zip Deploy et Kudu REST.

La tâche fonctionne pour les langues prises en charge Azure Functions.

Conditions préalables pour la tâche

Les prérequis suivants doivent être configurés dans la ou les machines cibles pour que la tâche fonctionne correctement.

Fonction Azure

La tâche est utilisée pour déployer un projet Azure Functions sur une fonction Azure existante. L’application De fonction Azure doit exister avant d’exécuter la tâche. L’application de fonction Azure peut être créée à partir du Portail Azure. Vous pouvez également utiliser la tâche Azure PowerShell pour exécuter des scripts AzureRM PowerShell afin d’approvisionner et de configurer l’application Azure Function.

La tâche peut être utilisée pour déployer Azure Functions (Windows/Linux).

Abonnement Azure

Pour effectuer un déploiement sur Azure, un abonnement Azure doit être lié à Azure Pipelines à l’aide de l’onglet Services de la section Administration des comptes. Ajoutez l’abonnement Azure à utiliser dans la définition Générer ou Release Management en ouvrant l’écran Administration de compte (icône d’engrenage en haut à droite de l’écran), puis cliquez sur l’onglet Services.

Créez le point de terminaison de service ARM et utilisez le type de point de terminaison Azure Resource Manager. Pour plus d’informations, suivez les étapes répertoriées dans le lien ici.

La tâche ne fonctionne pas avec le point de terminaison de service Azure Classic et elle ne répertorie pas ces connexions dans les paramètres de la tâche.

Méthodes de déploiement

Plusieurs méthodes de déploiement sont disponibles dans cette tâche.

Pour modifier l’option de déploiement basé sur un package dans une tâche de concepteur, développez Options de déploiement supplémentaires et activez Sélectionner une méthode de déploiement.

Selon le type de l’agent Azure App Service et Azure Pipelines, la tâche utilise une technologie de déploiement appropriée. Les technologies de déploiement utilisées par les tâches sont les suivantes :

Par défaut, la tâche tente de sélectionner la technologie de déploiement appropriée en fonction du package d’entrée, du type d’App Service et du système d’exploitation de l’agent.

  • Si un script post-déploiement est fourni, utilisez Zip Deploy.
  • Si le type App Service est Web App sur Linux, utilisez Zip Deploy.
  • Si un fichier .war est fourni, utilisez War Deploy.
  • Si un fichier .jar est fourni, utilisez Run-From-Zip.
  • Pour toutes les autres tâches, utilisez Exécution à partir d’un package (via Zip Deploy).

Sur un agent non Windows (pour n’importe quel type d’App Service), la tâche s’appuie sur l’API REST Kudu pour déployer l’application web.

API REST Kudu

L’API REST Kudu fonctionne sur les agents d’automatisation Windows et Linux lorsque la cible est une application web sur Windows, une application web sur Linux (source intégrée) ou une application de fonction. La tâche utilise Kudu pour copier des fichiers dans Azure App Service.

Zip Deploy

Zip Deploy crée un package de déploiement .zip à partir du package ou du dossier choisi. Il déploie ensuite le contenu du fichier dans le dossier wwwroot de l’application de fonction de nom App Service dans Azure. Cette option remplace tout le contenu existant dans le dossier wwwroot. Pour plus d’informations, consultez Déploiement Zip pour Azure Functions.

Exécution à partir du package

Exécuter à partir du package crée le même package de déploiement que Zip Deploy. Au lieu de déployer des fichiers dans le dossier wwwroot, le runtime Functions monte l’intégralité du package. Lorsque vous utilisez cette option, les fichiers du dossier wwwroot passent en lecture seule. Pour plus d’informations, consultez l’article Run your Azure Functions from a package file (Exécuter vos fonctions Azure à partir d’un fichier de package).

Dépannage

Erreur : impossible de récupérer le jeton d’accès pour Azure. Vérifiez que le principal de service utilisé est valide et n’a pas expiré.

La tâche utilise le principal de service dans la connexion de service pour s’authentifier auprès d’Azure. Si le principal de service a expiré ou n’a pas d’autorisations sur App Service, la tâche échoue avec cette erreur. Vérifiez la validité du principal de service utilisé et s’il est présent dans l’inscription de l’application. Pour plus d’informations, consultez Utiliser le contrôle d’accès en fonction du rôle pour gérer l’accès aux ressources de votre abonnement Azure. Ce billet de blog contient également plus d’informations sur l’utilisation de l’authentification du principal de service.

Erreur SSL

Si vous voulez utiliser un certificat dans App Service, le certificat doit être signé par une autorité de certification approuvée. Si votre application web permet de voir les erreurs de validation de certificat, vous utilisez probablement un certificat auto-signé. Définissez une variable nommée VSTS_ARM_REST_IGNORE_SSL_ERRORS sur la valeur true dans le pipeline de build ou de mise en production pour résoudre l’erreur.

Une mise en production se bloque pendant une période prolongée, puis échoue

Ce problème peut être le résultat d’une capacité insuffisante dans votre plan App Service. Pour résoudre le problème, vous pouvez effectuer un scale-up de l’instance App Service afin d’augmenter le processeur, la RAM et l’espace disque disponibles, ou vous pouvez essayer un autre plan App Service.

Codes d’erreur 5xx

Si vous voyez une erreur 5xx, vérifiez l’état de votre service Azure.

La fonction Azure a soudainement cessé de fonctionner

Azure Functions peut cesser de fonctionner soudainement si plus d’un an s’est écoulé depuis le dernier déploiement. Si vous déployez avec « RunFromPackage » dans « deploymentMethod », une sap avec une date d’expiration de 1 an est générée et définie comme valeur « WEBSITE_RUN_FROM_PACKAGE » dans la configuration de l’application. Azure Functions utilise cette sap pour référencer le fichier de package pour l’exécution de la fonction. Par conséquent, si la sap a expiré, la fonction ne sera pas exécutée. Pour résoudre ce problème, déployez à nouveau pour générer une sap dont la date d’expiration est d’un an.

Erreur : package introuvable avec le modèle spécifié

Vérifiez si le package mentionné dans la tâche est publié en tant qu’artefact dans la build ou au cours d’une phase précédente, et s’il est téléchargé dans le travail actuel.

Erreur : La publication avec l’option zip deploy n’est pas prise en charge pour le type de package msBuild

Les packages web créés via la tâche MSBuild (avec les arguments par défaut) ont une structure de dossiers imbriqués qui peut être déployée correctement seulement par Web Deploy. L’option de déploiement publish-to-zip ne peut pas être utilisée pour déployer ces packages. Pour convertir la structure d’empaquetage, effectuez les étapes suivantes :

  1. Dans la tâche Générer la solution, remplacez les arguments MSBuild par /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent" :

    Capture d’écran montrant les valeurs de Générer la solution.

  2. Ajoutez une tâche Archive et changez les valeurs de la façon suivante :

    1. Définissez le dossier racine ou fichier à archiver sur $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Décochez la case Ajouter le nom du dossier racine au début des chemins d’archive :

      Capture d’écran montrant les valeurs Archive.

Le déploiement de l’application de fonction sur Windows réussit, mais l’application ne fonctionne pas

Ce problème peut se produire si un fichier web.config n’est pas présent dans votre application. Vous pouvez ajouter un fichier web.config à votre source ou en générer automatiquement un à l’aide des Paramètres d’application et de configuration de la tâche.

  1. Sélectionnez la tâche et accédez à Générer les paramètres web.config pour les applications Python, Node.js, Go et Java :

    Capture d’écran montrant la section Générer des paramètres web.config.

  2. Sélectionnez le bouton Plus (...) sous Générer des paramètres web.config pour Python, Node.js, Go et Java pour modifier les paramètres :

    Capture d’écran montrant les paramètres Générer web.config.

  3. Sélectionnez votre type d’application dans la liste de l’infrastructure d’application.

  4. Sélectionnez OK. Cela remplit les paramètres web.config requis pour générer le fichier web.config.

FAQ

Comment configurer ma connexion de service ?

Cette tâche nécessite une connexion de service Azure Resource Manager.

Comment configurer le déploiement de travaux web avec Application Insights ?

Quand vous déployez sur une instance App Service, si Application Insights est configuré et que vous avez activé Remove additional files at destination, vous devez également activer Exclude files from the App_Data folder. L’activation de cette option maintient l’extension Application Insights dans un état sécurisé. Cette étape est obligatoire, car le travail web Application Insights continu est installé dans le dossier App_Data.

Comment configurer mon agent s’il est derrière un proxy pendant le déploiement sur App Service ?

Si votre agent auto-hébergé nécessite un proxy web, vous pouvez indiquer le proxy à l’agent pendant la configuration. Cela permet à votre agent de se connecter à Azure Pipelines ou à Azure DevOps Server avec le proxy. En savoir plus sur l’exécution d’un agent auto-hébergé derrière un proxy web.

Je ne parviens pas à déployer sur un App Service Environment interne à l’aide d’une connexion de service Azure Resource Manager et d’un agent hébergé par Microsoft

Par conception, un agent hébergé par Microsoft ne fonctionnera pas avec un App Service Environment. Au lieu de cela, vous devez configurer un agent privé sur une machine virtuelle qui se trouve dans le même réseau virtuel que le App Service Environment. Définissez également une zone DNS privée pour activer la communication entre les ressources.

Exemples

Voici un exemple d’extrait de code YAML qui déploie des fonctions Azure sur 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

Pour déployer une fonction sur Linux, ajoutez le paramètre appType et définissez-le sur appType: functionAppLinux. Si vous ne spécifiez pas de valeur, la valeur par défaut est functionApp.

Pour spécifier explicitement la méthode de déploiement sur Zip Deploy, ajoutez le paramètre deploymentMethod: zipDeploy. Une autre valeur prise en charge pour ce paramètre est runFromPackage. Si vous ne spécifiez pas de valeur, la valeur par défaut est auto.

Pour une procédure pas à pas qui montre comment créer un pipeline CI/CD, consultez Générer et déployer Java sur Azure Functions.

Configuration requise

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Quelconque
Variables settables Quelconque
Version de l’agent 2.104.1 ou version ultérieure
Catégorie de la tâche Déployer