AzureFunctionApp@2 - Tâche Déployer Azure Functions v2
Mettez à jour une application de fonction avec .NET, Python, JavaScript, PowerShell, applications web basées sur Java.
Syntaxe
# 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.
Entrées
connectedServiceNameARM
-
de 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.
isFlexConsumption
-
Is Function App on Flex Consumption Plan
boolean
. Valeur par défaut : false
.
Défini sur true
si l’application de fonction se trouve sur un plan Flex Consumption.
appName
-
nom de l’application Azure Functions
string
. Obligatoire.
Spécifiez le nom d’une application Azure Functions existante. Les applications de fonction répertoriées sont basées sur le type d’application sélectionné.
deployToSlotOrASE
-
déployer sur un emplacement ou un environnement App Service
boolean
. Optionnel. Utilisez quand appType != "" && isFlexConsumption = false
. Valeur par défaut : false
.
Déploie sur un emplacement de déploiement existant ou Dans Azure App Service Environment. 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, elle est par défaut l’emplacement de production . Tout autre nom d’emplacement existant peut également être fourni.
Si la cible de déploiement est un environnement Azure App Service, laissez le nom de l’emplacement comme de production et spécifiez le nom du groupe de ressources.
deployToSlotOrASE
-
déployer sur un emplacement ou un environnement App Service
boolean
. Optionnel. Utilisez quand appType != ""
. Valeur par défaut : false
.
Déploie sur un emplacement de déploiement existant ou Dans Azure App Service Environment. 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, elle est par défaut l’emplacement de production . Tout autre nom d’emplacement existant peut également être fourni.
Si la cible de déploiement est un environnement Azure App Service, laissez le nom de l’emplacement comme de production et spécifiez le nom du groupe de ressources.
resourceGroupName
-
groupe de ressources
string
. Obligatoire 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 environnement App Service.
Entre ou sélectionne le groupe de ressources Azure qui contient azure App Service spécifié ci-dessus.
slotName
-
emplacement
string
. Obligatoire lorsque deployToSlotOrASE = true
. Valeur par défaut : production
.
Entre ou sélectionne un emplacement existant, à l’exclusion de l’emplacement de production.
slotName
-
emplacement
string
. Obligatoire 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 du fichier au package ou au dossier qui contient le contenu App Service 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 Runtime
string
. Optionnel. Utilisez quand appType = functionAppLinux && isFlexConsumption = false
. Valeurs autorisées : 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
.
Spécifiez l’infrastructure et la version sur laquelle votre application de fonction s’exécute. Vous pouvez utiliser l’une des versions d’exécution prises en charge . Les anciennes valeurs comme DOCKER|microsoft/azure-functions-*
sont déconseillées. De nouvelles valeurs sont répertoriées dans la liste déroulante de l’Assistant tâche . S’il existe une version plus récente d’une infrastructure disponible dans le versions d’exécution prises en charge vous pouvez la spécifier même si elle n’est pas dans la liste.
Note
Cette valeur ne met actuellement pas à jour le linuxFxVersion sur lequel le site s’exécute. Cela signifie que vous ne pouvez pas mettre à jour la pile du nœud 18 vers le nœud 20. La tâche met à jour uniquement les paramètres de l’application.
runtimeStack
-
pile Runtime
string
. Optionnel. 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|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)) 3/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écute. Vous pouvez utiliser l’une des versions d’exécution prises en charge . Les anciennes valeurs comme DOCKER|microsoft/azure-functions-*
sont déconseillées. De nouvelles valeurs sont répertoriées dans la liste déroulante de l’Assistant tâche . S’il existe une version plus récente d’une infrastructure disponible dans le versions d’exécution prises en charge vous pouvez la spécifier même si elle n’est pas dans la liste.
paramètres d’application appSettings
-
string
.
Entrez les paramètres de l’application à l’aide de la syntaxe -key value
(par exemple : -Port 5000
-RequestTimeout 5000
-WEBSITE_TIME_ZONE
). Placez les valeurs qui contiennent des espaces entre guillemets doubles (par exemple : "Eastern Standard Time"
).
Pour plus d’informations sur les paramètres d’application, consultez Variables d’environnement et paramètres d’application dans Azure App Service.
deploymentMethod
-
méthode Deployment
string
. Obligatoire lorsque appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Valeurs autorisées : auto
(détection automatique), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy avec Run From Package). Valeur par défaut : auto
.
Spécifie la méthode de déploiement pour l’application. Les applications de consommation Linux ne prennent pas en charge cette configuration.
deploymentMethod
-
méthode Deployment
string
. Obligatoire lorsque appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Valeurs autorisées : auto
(détection automatique), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy avec Run From Package). Valeur par défaut : auto
.
Spécifie la méthode de déploiement pour l’application. Les applications de consommation Linux ne prennent pas en charge cette configuration.
deploymentMethod
-
méthode Deployment
string
. Obligatoire lorsque appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Valeurs autorisées : auto
(détection automatique), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy avec Run From 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 tâche
Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâche. 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 en aval, les travaux et les étapes.
AppServiceApplicationUrl
'URL 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 pour déployer Functions sur Azure. La tâche fonctionne sur des agents Azure Pipelines multiplateformes exécutant Windows, Linux ou Mac et utilise les technologies de déploiement sous-jacentes de RunFromPackage, Zip Deploy et API REST Kudu.
La tâche fonctionne pour les langages pris en charge par Azure Functions .
Conditions préalables pour la tâche
Les conditions préalables suivantes doivent être configurées sur 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 tâche Azure PowerShell pour exécuter scripts AzureRM PowerShell pour approvisionner et configurer l’application De fonction Azure.
La tâche peut être utilisée pour déployer Azure Functions (Windows/Linux).
Abonnement Azure
Pour déployer sur Azure, un abonnement Azure doit être lié à Azure Pipelines à l’aide de l’onglet Services dans la section Administration du compte. Ajoutez l’abonnement Azure à utiliser dans la définition Build ou Release Management en ouvrant l’écran Administration du 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
La tâche ne fonctionne pas avec le point de terminaison de service Azure Classic et 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ée sur un package dans une tâche de concepteur, développez options de déploiement supplémentaires et activez Sélectionner la méthode de déploiement.
En fonction du type d’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 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 Run From Package (via Zip Deploy).
Sur un agent non-Windows (pour n’importe quel type App Service), la tâche s’appuie sur la l’API REST Kudu pour déployer l’application web.
Kudu REST API
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 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écuter à 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 deviennent en lecture seule. Pour plus d’informations, consultez Exécuter vos fonctions Azure à partir d’un fichier de package.
Dépannage
Erreur : Impossible d’extraire le jeton d’accès pour Azure. Vérifiez si 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 qu’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 à vos ressources d’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 souhaitez utiliser un certificat dans App Service, le certificat doit être signé par une autorité de certification approuvée. Si votre application web vous fournit des 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 génération ou de mise en production pour résoudre l’erreur.
Une mise en production se bloque pendant longtemps, puis échoue
Ce problème peut être le résultat d’une capacité insuffisante dans votre plan App Service. Pour résoudre ce problème, vous pouvez effectuer un scale-up de l’instance App Service pour augmenter l’espace processeur, ram et disque disponible ou essayer avec un autre plan App Service.
5 codes d’erreurxx
Si vous voyez une erreur 5xx, vérifiez l’état de votre service Azure.
Azure Function a soudainement cessé de fonctionner
Azure Functions peut soudainement cesser de fonctionner si plusieurs années sont passées 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 de « 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 avec une date d’expiration d’un an.
Erreur : Aucun package trouvé 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 une étape précédente et téléchargé dans le travail actuel.
Erreur : La publication à l’aide de 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 des arguments par défaut) ont une structure de dossiers imbriquée qui peut être déployée correctement uniquement 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, procédez comme suit :
Dans la tâche générer la solution, remplacez les des arguments MSBuild
par : Ajoutez une tâche Archive et modifiez les valeurs comme suit :
Modifiez dossier racine ou fichier pour archiver en
$(System.DefaultWorkingDirectory)\\WebAppContent
.Désactivez le nom du dossier racine prépend pour archiver les chemins d’accès case à cocher :
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.
Sélectionnez la tâche et accédez à Générer des paramètres de web.config pour Python, Node.js, Go et les applications Java:
Sélectionnez le bouton Plus (...) sous Générer des paramètres web.config pour Python, Node.js, Go et Les applications Java pour modifier les paramètres :
Sélectionnez votre type d’application dans la liste des de l’infrastructure d’application
. Sélectionnez OK. Cela remplit les paramètres web.config requis pour générer le fichier web.config.
Questions fréquentes (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 ?
Lorsque vous effectuez un déploiement sur app Service, si vous avez Application Insights 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 conserve l’extension Application Insights dans un état sûr. Cette étape est requise, car la tâche web continue Application Insights est installée dans le dossier App_Data.
Comment configurer mon agent s’il se trouve derrière un proxy pendant le déploiement sur App Service ?
Si votre agent auto-hébergé nécessite un proxy web, vous pouvez informer l’agent sur le proxy pendant la configuration. Cela permet à votre agent de se connecter à Azure Pipelines ou à Azure DevOps Server via le proxy. En savoir plus sur l’exécution d’un agent auto-hébergé derrière un proxy web.
Je ne peux pas déployer sur un environnement App Service 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 environnement App Service. 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 l’environnement App Service. 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, functionApp
est la valeur par défaut.
Pour spécifier explicitement la méthode de déploiement en tant que 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, auto
est la valeur par défaut.
Pour obtenir 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.
Exigences
Exigence | Description |
---|---|
Types de pipelines | YAML, Build Classique, Version Classique |
Exécutions sur | Agent, DeploymentGroup |
demandes | Aucun |
fonctionnalités de | Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail. |
restrictions de commande | Quelconque |
variables settables | Quelconque |
Version de l’agent | 2.104.1 ou version ultérieure |
Catégorie de tâche | Déployer |