Partager via


AzureWebApp@1 - Tâche Azure Web App v1

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

Syntaxe

# 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 le 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.


nom de l’application appName -
string. Obligatoire.

Spécifie le nom d’un service 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 environnement App Service
boolean. Optionnel. Utilisez quand appType != "". Valeur par défaut : false.

Sélectionne l’option de déploiement sur un emplacement de déploiement existant ou dans 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. 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 Azure App Service.
Spécifie le groupe de ressources Azure qui contient Azure App Service indiqué ci-dessus.


slotName - emplacement
string. Obligatoire 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 au dossier qui contient le contenu App Service 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. Optionnel. Utilisez quand package EndsWith .war.

Spécifie le nom du dossier personnalisé sur lequel vous souhaitez effectuer le déploiement.
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, elle est déployée sur <appname>.azurewebsited.net/<customWarName>.


runtimeStack - pile Runtime
string. Optionnel. 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 (Application web sur Linux). Ce paramètre est disponible uniquement lorsque application web Linux est sélectionnée en tant que type d’application dans la tâche.


startUpCommand - commande de démarrage
string. Optionnel. 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 de web.config pour Python, Node.js, Go et les applications Java
string. Optionnel. Utilisez quand appType != webAppLinux && package NotEndsWith .war.

Une web.config standard sera générée et déployée sur Azure App Service si l’application n’en a pas. Les valeurs de web.config varient en fonction de l’infrastructure d’application et peuvent être modifiées. Par exemple, pour l’application node.js, web.config a un fichier de démarrage et des valeurs de module iis_node. Cette fonctionnalité d’édition concerne uniquement les générées web.config.


paramètres d’application appSettings -
string.

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


paramètres de configuration configurationStrings -
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). Placez les valeurs qui contiennent des espaces entre guillemets doubles.


deploymentMethod - méthode Deployment
string. Obligatoire lorsque appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Valeurs autorisées : auto (détection automatique), zipDeploy (Zip Deploy), runFromPackage (Exécuter à partir du package). Valeur par défaut : auto.

Choisissez la méthode de déploiement pour l’application. Les valeurs acceptables sont automatique, zipDeployet runFromPackage.


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
l’URL de l’application d’Azure App Service sélectionnée.

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 du 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 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 Web App sur l’application Linux, utilisez Zip Deploy
  • Si un fichier War 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 API REST Kudu pour déployer l’application web.

API REST Kudu

API REST Kudu travailler sur des agents d’automatisation Windows ou Linux lorsque la cible est Web App sur Windows, Application web sur Linux (source intégrée) ou Application de fonction. 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, l’ensemble du package est monté par le runtime Azure Functions. Avec 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.

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 :

  1. Dans la tâche générer la solution, remplacez les des arguments MSBuild par :

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

  2. Ajoutez une tâche Archive et modifiez les valeurs comme suit :

    1. Modifiez dossier racine ou fichier pour archiver en $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Désactivez le nom du dossier racine prépend pour archiver les chemins d’accès case à cocher :

      Capture d’écran montrant les valeurs Archive.

Questions fréquentes (FAQ)

Quelle est la différence entre les tâches AzureWebApp 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 à l’application racine dans l’application web Azure.

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

Note

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

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

Cela peut être dû au fait que 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 de paramètres d’application et de configuration.

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

    Capture d’écran de la boîte de dialogue Générer des paramètres de 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. Cela remplira les paramètres web.config requis pour générer web.config.

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

  • Vérifiez que l’agent de build Azure DevOps se trouve sur le même réseau virtuel (sous-réseau peut être différent) que l’équilibreur de charge interne (ILB) d’ASE. Cela permet à l’agent d’extraire du code à partir d’Azure DevOps et de le déployer sur 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 à Azure DevOps Service.
  • 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 du réseau virtuel n’ont pas d’entrées dans Azure DNS. Cela doit donc être ajouté au fichier de l’hôte sur la machine de l’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, cela 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 ?

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.

Exemples

Voici un exemple d’extrait de code YAML pour déployer une application web sur Azure Web App Service 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 appType et définissez-le sur appType: webAppLinux.

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

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

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.209.0 ou version ultérieure
Catégorie de tâche Déployer
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