Remarque
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 2022
Cet article explique comment utiliser Azure Pipelines pour générer, tester, et déployer automatiquement votre application web sur Azure App Service. Vous pouvez configurer un pipeline d’intégration continue et de livraison continue (CI/CD) qui s’exécute chaque fois que vous archivez une modification du code vers une branche désignée de votre référentiel.
Les pipelines se composent de phases, de travaux, et d’étapes. Une étape est le plus petit élément d’un pipeline, et peut être un script ou une tâche, qui est un script préconfiguré. Pour plus d’informations sur les concepts clés et les composants qui composent un pipeline, consultez les concepts clés d’Azure Pipelines.
Vous pouvez utiliser la tâche Azure Web App dans votre pipeline pour effectuer un déploiement sur App Service. Pour des scénarios plus complexes, comme l’utilisation de paramètres XML dans les déploiements, vous pouvez utiliser la tâche de déploiement Azure App Service .
Prerequisites
Une application Azure App Service opérationnelle avec du code hébergé sur GitHub ou Azure Repos. Vous pouvez utiliser l’un des articles de démarrage rapide suivants pour créer un exemple d’application :
- ASP.NET Core : Créer une application web ASP.NET Core dans Azure
- ASP.NET : Créer une application web ASP.NET Framework dans Azure
- JavaScript : Créer une application web Node.js dans Azure App Service
- Java : Créer une application Java dans Azure App Service
- Python : Créer une application Python dans Azure App Service
Une organisation Azure DevOps qui a la capacité à exécuter des pipelines sur des agents hébergés par Microsoft. Vous devez demander un niveau gratuit de travaux parallèles ou acheter des travaux parallèles. Pour plus d’informations, consultez Configurer et payer des travaux parallèles.
Un projet créé dans l’organisation Azure DevOps où vous êtes autorisé à créer et à autoriser des pipelines et des connexions de service Azure. Créez un projet dans Azure DevOps.
Important
Pendant les procédures GitHub, vous pouvez être invité à créer une connexion de service GitHub ou être redirigé vers GitHub pour vous connecter, installer l’application GitHub Azure Pipelines, autoriser Azure Pipelines, ou vous authentifier auprès d’organisations GitHub. Suivez les instructions à l’écran pour terminer les processus nécessaires. Pour plus d’informations, consultez Accès aux référentiels GitHub.
Créer une chaîne de traitement
Les exemples de code de cette section concernent une application web ASP.NET Core. Vous pouvez adapter les instructions pour d’autres infrastructures. Pour plus d’informations sur la prise en charge de l’écosystème Azure Pipelines, consultez les exemples d’écosystème Azure Pipelines.
Définissez un pipeline en créant un fichier YAML azure-pipelines.yml dans votre référentiel de code.
- Dans le menu de navigation de gauche de votre projet Azure DevOps, sélectionnez Pipelines.
- Dans la page Pipelines, sélectionnez Nouveau pipeline, ou Créer un pipeline si ce pipeline est le premier du projet.
- Dans l’écran Où se trouve votre code, sélectionnez l’emplacement de votre code source, Azure Repos Git ou GitHub. Si nécessaire, connectez-vous à GitHub.
- Dans l’écran Sélectionner un référentiel, sélectionnez votre référentiel de code.
- Dans l’écran Configurer votre pipeline, sélectionnez Pipeline de démarrage.
Ajoutez la tâche .NET Core (DotNetCoreCLI@2) au pipeline, puis générez et publiez votre application.
- Dans l’écran Vérifier votre YAML de pipeline, supprimez tout le code après la ligne
steps:. - Sélectionnez la fin du fichier, puis sélectionnez Afficher l’Assistant à droite.
- Sous Tâches, sélectionnez .NET Core.
- Dans l’écran de configuration .NET Core, sous Connexion Azure Resource Manager, sélectionnez votre abonnement Azure, puis sélectionnez Autoriser pour créer la connexion de service requise.
- Sous Commande, sélectionnez Publier.
- Vérifiez que les cases à cocher Publier des projets web et Projets zip publiés sont cochées, puis sélectionnez Ajouter.
- La tâche s’affiche dans votre pipeline YAML. Passez en revue le code YAML pour voir ce qu’il fait. Lorsque vous êtes prêt, sélectionnez Enregistrer et exécuter, puis à nouveau Enregistrer et exécuter.
- Dans l’écran Résumé de la build, sous Travaux, sélectionnez le lien Autorisation nécessaire. Dans l’écran Vérifications, sélectionnez Autoriser, puis à nouveau Autoriser. L’octroi de l’autorisation ici autorise l’utilisation de la connexion de service que vous avez autorisée pour toutes les exécutions de ce pipeline.
Le pipeline publie le fichier ZIP de déploiement en tant qu’artefact Azure utilisable par la tâche de déploiement à l’étape suivante.
Ajouter la tâche de déploiement
Une fois le pipeline exécuté avec succès, ajoutez la tâche de déploiement.
- Dans l’écran Résumé de l’exécution du pipeline, sélectionnez l’icône Autres actions en haut à droite, puis sélectionnez Modifier le pipeline.
- Sélectionnez la fin du fichier YAML, puis sélectionnez Afficher l’Assistant si la liste Tâches n’est pas visible.
- Dans la liste Tâches , recherchez et sélectionnez la tâche Azure Web App. Vous pouvez également utiliser la tâche de déploiement Azure App Service.
- Dans l’écran de configuration d’Azure Web App, sous Abonnement Azure, sélectionnez la même connexion de service que celle que vous avez configurée pour l’étape précédente. Vous n’avez pas besoin de réautoriser cette connexion.
- Pour Type d’application, sélectionnez Azure Web App sur Linux ou Azure Web App sur Windows, en fonction de votre code.
- Pour Nom de l’application, sélectionnez ou entrez le nom de votre application App Service.
- Sélectionnez Ajouter.
- Sélectionnez Valider et enregistrer, puis Enregistrer.
- Sélectionnez Exécuter, puis à nouveau Exécuter.
Le pipeline YAML complet doit ressembler au code suivant :
trigger:
- <branch-specification>
pool:
vmImage: <agent-specification>
steps:
- task: DotNetCoreCLI@2
inputs:
azureSubscription: '<your-authorized-service-connection>'
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<your-authorized-service-connection>'
appType: 'webApp'
appName: '<your-app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
deploymentMethod: 'auto'
-
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 au dossier contenant votre contenu App Service. Les caractères génériques sont pris en charge.
Examples
Les sections suivantes décrivent la création de différents types de pipelines de build et de mise en production.
Déployer sur une application virtuelle
La tâche Azure Web App se déploie sur 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.
- task: AzureRmWebAppDeployment@5
inputs:
VirtualApplication: '<name of virtual application>'
VirtualApplication est le 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.
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>'
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription: votre connexion de service Azure. -
appType: type d’application facultatif, tel quewebAppLinuxpour déployer une application web sur Linux. -
appName: nom de votre application existante. -
deployToSlotOrASE:Booléen. Indique s’il faut déployer sur un emplacement de déploiement existant ou un environnement App Service. -
resourceGroupName: nom du groupe de ressources sur lequel effectuer le déploiement ; obligatoire sideployToSlotOrASEest true. -
slotName: nom de l’emplacement sur lequel effectuer le déploiement ; obligatoire sideployToSlotOrASEest true. La valeur par défaut estproduction. -
package: chemin d’accès au package ou au dossier contenant le contenu de votre application. Les caractères génériques sont pris en charge. -
SourceSlot: Emplacement envoyé à la production lorsqueSwapWithProductionest vrai. -
SwapWithProduction:Booléen. Indique s’il faut échanger le trafic de l’emplacement source avec la production.
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'
Déployer de manière conditionnelle
Pour effectuer un déploiement conditionnel dans YAML, utilisez l’une des techniques suivantes :
- Ajouter une condition à l’étape.
- Isoler les étapes de déploiement dans un travail distinct et ajouter une condition à celui-ci.
L’exemple suivant montre comment utiliser des conditions d’étape pour déployer uniquement les builds réussies 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 plus d’informations sur les conditions, consultez Spécifier des conditions.
Déployer à l’aide de Web Deploy
La tâche de déploiement Azure App Service peut être déployée sur App Service à l’aide de Web Deploy.
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@5
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 Azure Web App est le moyen le plus simple d’effectuer un déploiement sur une application web Azure. Par défaut, vous déployez l’application racine dans l’application web Azure.
La tâche de déploiement Azure App Service 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, il peut y avoir une incompatibilité entre l’emplacement où votre package web généré est enregistré et celui où la tâche de déploiement le recherche. La tâche AzureWebApp par défaut récupère le package web pour le déploiement à partir de $(System.DefaultWorkingDirectory)/**/*.zip. Si le package web est déposé ailleurs, modifiez la valeur du paramètre 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 tâche AzureRmWebAppDeployment lorsque vous configurez la tâche à déployer à l’aide de Web Deploy, mais que votre agent n’exécute pas Windows. Vérifiez que votre paramètre YAML vmImage spécifie Windows.
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 sur la résolution des problèmes liés à l’authentification Microsoft Entra ID avec la tâche de déploiement Azure App Service, consultez Je ne parviens pas à utiliser Web Deploy sur Azure App Service à l’aide de l’authentification Microsoft Entra ID à partir de mon agent Windows.