Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
Utilisez Azure Pipelines pour déployer automatiquement votre application web sur Azure App Service à chaque build réussie. Azure Pipelines vous permet de générer, de tester et de déployer avec l’intégration continue et la livraison continue (CI/CD) à l’aide d’Azure DevOps.
Les pipelines YAML sont définis à l’aide d’un fichier YAML dans votre référentiel. Une étape est le plus petit bloc de construction d’un pipeline, et peut être un script ou une tâche (script prédéfini). En savoir plus sur les principaux concepts et composants qui composent un pipeline.
Vous utilisez la tâche Azure Web App (AzureWebApp
) pour déployer sur Azure App Service dans votre pipeline. Pour des scénarios plus complexes, comme lorsque vous devez utiliser des paramètres XML dans votre déploiement, vous pouvez utiliser la tâche AzureRmWebAppDeployment
de déploiement Azure App Service.
Configuration requise :
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une organisation Azure DevOps. Créez-en un gratuitement.
- Possibilité de faire fonctionner des pipelines sur des agents hébergés par Microsoft. Vous pouvez acheter un travail parallèle ou demander un niveau gratuit.
- Application Azure App Service opérationnelle avec le code hébergé sur GitHub ou Azure Repos.
- .NET : Créez une application web ASP.NET Core dans Azure.
- ASP.NET : Créez une application web ASP.NET Framework dans Azure.
- JavaScript : Créez une application web Node.js dans Azure App Service.
- Java : Créez une application Java dans Azure App Service.
- Python : Créez une application Python dans Azure App Service.
1. Créer un pipeline pour votre pile
Les exemples de code de cette section supposent que vous déployez une application web ASP.NET. Vous pouvez adapter les instructions pour d’autres infrastructures.
Apprenez-en davantage plus sur la prise en charge de l’écosystème Azure Pipelines.
Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.
Accédez aux pipelines et sélectionnez Nouveau pipeline.
Lorsque vous y êtes invité, sélectionnez l’emplacement de votre code source : Azure Repos Git ou GitHub.
Vous serez peut-être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.
Quand la liste des dépôts s’affiche, sélectionnez votre dépôt.
Vous serez peut-être redirigé vers GitHub pour pouvoir installer l’application Azure Pipelines. Si c’est le cas, sélectionnez Approuver et installer.
Quand l’onglet Configurer s’affiche, sélectionnez ASP.NET Core.
Quand votre nouveau pipeline s’affiche, examinez le code YAML pour voir ce qu’il fait. Lorsque vous êtes prêt, sélectionnez Enregistrer et exécuter.
2. Ajouter la tâche de déploiement
Sélectionnez la fin du fichier YAML, puis sélectionnez Afficher l’Assistant.
Utilisez l’Assistant Tâche pour ajouter la tâche d’application web Azure .
Vous pouvez également ajouter la tâche Azure App Service de déploiement
AzureRmWebAppDeployment
.Choisissez votre abonnement Azure. Veillez à sélectionner Autoriser pour autoriser votre connexion. L’autorisation crée la connexion de service requise.
Sélectionnez le type d’application, le nom de l’application et la pile d’exécution en fonction de votre application App Service. Votre YAML complet doit ressembler au code suivant.
variables: buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: true - task: AzureWebApp@1 inputs: azureSubscription: '<service-connection-name>' appType: 'webAppLinux' appName: '<app-name>' package: '$(System.DefaultWorkingDirectory)/**/*.zip'
-
azureSubscription
: nom de la connexion de service autorisée à votre abonnement Azure. -
appName
: nom de votre application existante. -
package
: chemin d’accès au package ou à un dossier contenant votre contenu App Service. Les caractères génériques sont pris en charge.
-
Exemple : déployer une application .NET
Pour déployer un package web .zip (par exemple, à partir d’une application web ASP.NET) vers une application web Azure, utilisez l’extrait de code suivant pour déployer la build sur une application.
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: 'webAppLinux'
appName: '<app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
-
azureSubscription
: Votre abonnement Azure. -
appType
: type d’application web. -
appName
: nom de votre service d’application existant. -
package
: chemin d’accès au package ou à un dossier contenant votre contenu App Service. Les caractères génériques sont pris en charge.
Exemple : Déployer sur une application virtuelle
Par défaut, votre déploiement se produit à l’application racine dans l’application web Azure. Vous pouvez déployer sur une application virtuelle spécifique en utilisant la propriété VirtualApplication
de la tâche de déploiement Azure App Service AzureRmWebAppDeployment
:
- task: AzureRmWebAppDeployment@4
inputs:
VirtualApplication: '<name of virtual application>'
-
VirtualApplication
: nom de l’application virtuelle configurée dans le portail Azure. Pour plus d’informations, consultez Configurer une application App Service dans le portail Azure.
Exemple : déployer sur un emplacement
L’exemple suivant montre comment effectuer un déploiement vers un emplacement de préproduction, puis dans un emplacement de production :
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
appName: '<app-name>'
deployToSlotOrASE: true
resourceGroupName: '<name of resource group>'
slotName: staging
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription
: Votre abonnement Azure. -
appType
: (Facultatif) PermetwebAppLinux
de déployer sur une application web sur Linux. -
appName
: nom de votre service d’application existant. -
deployToSlotOrASE*
:Booléen. Déployez dans un emplacement de déploiement existant ou dans Azure App Service Environment. -
resourceGroupName
: nom du groupe de ressources. Obligatoire si la valeur dedeployToSlotOrASE
est true. -
slotName
: Nom de l’emplacement, qui est défini par défaut surproduction
. Obligatoire si la valeur dedeployToSlotOrASE
est true. -
package
: chemin d’accès au package ou à un dossier contenant votre contenu App Service. Les caractères génériques sont pris en charge. -
SourceSlot
: Emplacement envoyé à la production lorsqueSwapWithProduction
est vrai. -
SwapWithProduction
:Booléen. Échangez le trafic de l’emplacement source avec la production.
Exemple : déployer sur plusieurs applications web
Vous pouvez utiliser des travaux dans votre fichier YAML pour configurer un pipeline de déploiements. En utilisant des travaux, vous pouvez contrôler l’ordre de déploiement sur plusieurs applications web.
jobs:
- job: buildandtest
pool:
vmImage: ubuntu-latest
steps:
# publish an artifact called drop
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
# deploy to Azure Web App staging
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<staging-app-name>'
deployToSlotOrASE: true
resourceGroupName: <group-name>
slotName: 'staging'
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- job: deploy
dependsOn: buildandtest
condition: succeeded()
pool:
vmImage: ubuntu-latest
steps:
# download the artifact drop from the previous job
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'drop'
path: '$(Pipeline.Workspace)'
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<production-app-name>'
resourceGroupName: <group-name>
package: '$(Pipeline.Workspace)/**/*.zip'
Exemple : déployer de manière conditionnelle
Pour effectuer un déploiement conditionnel dans YAML, vous pouvez utiliser l’une des techniques suivantes :
- Isoler les étapes de déploiement dans un travail distinct et ajouter une condition à celui-ci.
- Ajouter une condition à l’étape.
L’exemple suivant montre comment utiliser des conditions d’étape pour déployer uniquement des builds provenant de la branche principale :
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
Pour en savoir plus sur les conditions, consultez Spécifier des conditions.
Exemple : Déployer à l’aide de Web Deploy
La tâche AzureRmWebAppDeployment
de déploiement Azure App Service peut être déployée sur App Service à l’aide du déploiement web.
trigger:
- main
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration)'
zipAfterPublish: true
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-connection-name>'
appType: 'webApp'
WebAppName: '<app-name>'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
Forum aux questions
Quelle est la différence entre les tâches AzureWebApp
et AzureRmWebAppDeployment
?
La tâche 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 de déploiement Azure App Service (AzureRmWebAppDeployment
) peut gérer des scénarios plus personnalisés, tels que :
- Déployez avec Web Deploy, si vous utilisez généralement le processus de déploiement d’Internet Information Services (IIS).
- Déployez sur des applications virtuelles.
- Déployez sur d’autres types d’applications, tels que les applications conteneur, les applications de fonction, les tâches web ou les applications API et mobiles.
Remarque
La tâche de transformation de fichier distincte prend également en charge les transformations de fichiers et la substitution de variables à 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.
Pourquoi est-ce que je reçois le message « Chemin de package ou de dossier App Service non valide fourni » ?
Dans les pipelines YAML, selon votre pipeline, il peut y avoir une incompatibilité entre l’emplacement où votre package web généré est enregistré et où la tâche de déploiement la recherche. Par exemple, la tâche AzureWebApp
récupère le package web pour le déploiement. La tâche AzureWebApp
pourrait apparaître dans $(System.DefaultWorkingDirectory)/**/*.zip
. Si le package web est déposé ailleurs, modifiez la valeur de package
.
Pourquoi est-ce que je reçois le message « Les options de publication avec Webdeploy ne sont prises en charge que lors de l'utilisation d'un agent Windows » ?
Cette erreur se produit dans la AzureRmWebAppDeployment
tâche lorsque vous configurez la tâche pour déployer à l'aide de Web Deploy, mais que votre agent n'exécute pas Windows. Vérifiez que votre YAML inclut quelque chose de similaire au code suivant :
pool:
vmImage: windows-latest
Pourquoi le déploiement web ne fonctionne-t-il pas quand je désactive l’authentification de base ?
Pour obtenir des informations de dépannage sur la manière de faire fonctionner l'authentification ID Microsoft Entra avec la tâche AzureRmWebAppDeployment
, consultez Je ne peux pas déployer par le Web vers mon Azure App Service à l'aide de l'authentification ID Microsoft Entra à partir de mon agent Windows.
Contenu connexe
- Personnalisez votre Pipeline Azure DevOps.