AzureWebApp@1 - Tâche Azure Web App v1

Cette tâche déploie une application web Azure pour Linux ou Windows.

Syntax

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. 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.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. 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: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

Entrées

azureSubscription - Abonnement Azure
string. Obligatoire.

Spécifie la connexion d’abonnement Azure Resource Manager pour le déploiement.


appType - Type d’application
string. Obligatoire. Valeurs autorisées : webApp (Application web sur Windows), webAppLinux (Application web sur Linux).

Spécifie le type d’application web Azure.


appName - Nom de l’application
string. Obligatoire.

Spécifie le nom d’un Azure App Service existant. Seuls les services d’application basés sur le type d’application sélectionné sont répertoriés.


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

Sélectionne l’option de déploiement sur un emplacement de déploiement existant ou un environnement Azure App Service.
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, la valeur par défaut est 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 « 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 environnement Azure App Service.
Spécifie le groupe de ressources Azure qui contient les Azure App Service indiqués ci-dessus.


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

Spécifie un emplacement existant, à l’exclusion de 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, un fichier zip compressé ou un fichier war. Les variables ( Build | Release) et les caractères génériques sont pris en charge. Par exemple, $(System.DefaultWorkingDirectory)/**/*.zip ou $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - Dossier de déploiement personnalisé
string. facultatif. Utilisez quand package EndsWith .war.

Spécifie le nom du dossier personnalisé sur lequel vous souhaitez déployer.
Si le champ est vide, le package est déployé sur <appname>.azurewebsites.net/<warpackagename>.
Si ROOT est entré, le package est déployé sur <appname>.azurewebsited.net.
Dans toutes les autres instances, il est déployé sur <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Pile d’exécution
string. facultatif. Utilisez quand appType = webAppLinux.

Web App sur Linux offre deux options différentes pour publier votre application : le déploiement d’images personnalisées (Application web pour conteneurs) et le déploiement d’applications avec une image de plateforme intégrée (Web App sur Linux). Ce paramètre n’est disponible que lorsque l’application web Linux est sélectionnée comme type d’application dans la tâche.


startUpCommand - Commande de démarrage
string. facultatif. Utilisez quand appType = webAppLinux.

Spécifie la commande de démarrage.
Par exemple :
dotnet run
dotnet filename.dll.


customWebConfig - Générer des paramètres web.config pour les applications Python, Node.js, Go et Java
string. facultatif. Utilisez quand appType != webAppLinux && package NotEndsWith .war.

Une web.config standard est générée et déployée sur Azure App Service si l’application n’en a pas. Les valeurs dans web.config varient en fonction de l’infrastructure d’application, et elles peuvent être modifiées. Par exemple, pour l’application node.js, web.config aura un fichier de démarrage et iis_node valeurs de module. Cette fonctionnalité de modification s’adresse uniquement au web.configgénéré .


appSettings - Paramètres de l’application
string.

Spécifiez les paramètres de l’application web à 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").


configurationStrings - Paramètres de configuration
string.

Spécifiez les paramètres de configuration de l’application web à l’aide de la syntaxe -key value (par exemple : -phpVersion 5.6-linuxFxVersion: node|6.11). Entourez les valeurs qui contiennent des espaces entre guillemets doubles.


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

Choisissez la méthode de déploiement de l’application. Les valeurs acceptables sont auto, zipDeploy et runFromPackage.


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 du Azure App Service sélectionné.

Remarques

Utilisez cette tâche pour déployer des applications web sur Azure App Service.

Méthodes de déploiement

Plusieurs méthodes de déploiement sont disponibles dans cette tâche. Auto est l’option par défaut.

Pour modifier l’option de déploiement basée sur un package dans la 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 choisit une technologie de déploiement appropriée. Les différentes technologies de déploiement utilisées par la tâche sont les suivantes :

  • API REST Kudu
  • Zip Deploy
  • RunFromPackage

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.

  • Lorsque le type de service d’application est Application web sur l’application Linux, utilisez Zip Deploy
  • Si un fichier De guerre est fourni, utilisez War Deploy
  • Si un fichier Jar est fourni, utilisez Exécuter à partir du package
  • Pour tous les autres, utilisez Exécuter à partir de Zip (via Zip Deploy)

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

API REST Kudu

Les API REST Kudu fonctionnent sur les agents d’automatisation Windows ou Linux lorsque la cible est Web App sur Windows, Web App sur Linux (source intégrée) ou Function App. La tâche utilise Kudu pour copier des fichiers dans Azure App Service.

Zip Deploy

Crée un package de déploiement .zip du package ou dossier choisi. Le contenu du fichier est ensuite déployé dans le dossier wwwroot de l’application de fonction dans Azure App Service. Cette option remplace tout le contenu existant dans le dossier wwwroot. Pour plus d’informations, consultez Déploiement Zip pour Azure Functions.

RunFromPackage

Crée le même package de déploiement que Zip Deploy. Toutefois, au lieu de déployer des fichiers dans le dossier wwwroot, le package entier est monté par le runtime Azure Functions. Avec 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).

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.

Azure Function a soudainement cessé de fonctionner

Azure Functions peuvent soudainement cesser de fonctionner si plus d’un an s’est écoulé depuis le dernier déploiement. Si vous effectuez un déploiement avec « RunFromPackage » dans « deploymentMethod », une signature d’accès partagé 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 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.

FAQ

Quelle est la différence entre les AzureWebApp tâches et AzureRmWebAppDeployment ?

La tâche Azure Web App (AzureWebApp) est le moyen le plus simple de déployer sur une application web Azure. Par défaut, votre déploiement se produit sur l’application racine dans l’application web Azure.

La tâche de déploiement Azure App Service (AzureRmWebAppDeployment) peut gérer des scénarios plus personnalisés, tels que :

Notes

Les transformations de fichiers et substitutions de variables sont également prises en charge par la tâche Transformation de fichier à utiliser dans Azure Pipelines. Vous pouvez utiliser la tâche Transformation de fichier pour appliquer des transformations de fichiers et substitutions de variables à tout fichier de configuration et de paramètres.

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

Cela peut être dû au fait que le 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.

  • Cliquez sur la tâche et accédez à Générer web.config paramètres pour les applications Python, Node.js, Go et Java.

    Capture d’écran de la boîte de dialogue Générer des paramètres web.config.

  • Cliquez sur le bouton ... plus pour modifier les paramètres.

    Capture d’écran de la boîte de dialogue déroulante.

  • Sélectionnez votre type d’application dans la liste déroulante.

  • Cliquez sur OK. Cette opération remplit les paramètres de web.config requis pour générer web.config.

Le déploiement de l’application web sur App Service Environment (ASE) ne fonctionne pas

  • Vérifiez que l’agent de build Azure DevOps se trouve sur le même VNet (le sous-réseau peut être différent) que l’équilibreur de charge interne (ILB) de l’environnement ASE. Cela permet à l’agent de tirer le code d’Azure DevOps et de le déployer sur l’environnement ASE.
  • Si vous utilisez Azure DevOps, l’agent n’a pas besoin d’être accessible à partir d’Internet, mais a uniquement besoin d’un accès sortant pour se connecter au service Azure DevOps.
  • Si vous utilisez TFS/Azure DevOps Server déployé dans un réseau virtuel, l’agent peut être complètement isolé.
  • L’agent de build doit être configuré avec la configuration DNS de l’application web sur laquelle il doit être déployé. Les ressources privées dans l’Réseau virtuel n’ont pas d’entrées dans Azure DNS. Cela doit donc être ajouté au fichier de l’hôte sur l’ordinateur agent.
  • Si un certificat auto-signé est utilisé pour la configuration ASE, l’option -allowUntrusted doit être définie dans la tâche de déploiement pour MSDeploy. Il est également recommandé de définir la variable VSTS_ARM_REST_IGNORE_SSL_ERRORS sur true. Si un certificat d’une autorité de certification est utilisé pour la configuration ASE, ce ne doit pas être nécessaire.

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.

Exemples

Voici un exemple d’extrait de code YAML pour déployer une application web sur l’App Service Web Azure s’exécutant sur Windows.

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

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Pour déployer Web App sur Linux, ajoutez le paramètre et définissez-le appType sur appType: webAppLinux.

Pour spécifier 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.

S’il n’est pas spécifié, auto est la valeur par défaut.

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