Déploiement Git local vers Azure App ServiceLocal Git deployment to Azure App Service

Ce guide pratique vous montre comment déployer votre application sur Azure App Service depuis un référentiel Git sur votre ordinateur local.This how-to guide shows you how to deploy your app to Azure App Service from a Git repository on your local computer.

PrérequisPrerequisites

Pour suivre les étapes décrites dans ce guide de procédures :To follow the steps in this how-to guide:

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

  • Installer Git.Install Git.

  • Obtenez un référentiel Git local comprenant le code que vous souhaitez déployer.Have a local Git repository with code you want to deploy. Pour télécharger un exemple de référentiel, exécutez la commande suivante dans la fenêtre de terminal locale :To download a sample repository, run the following command in your local terminal window:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

Préparer votre dépôtPrepare your repository

Pour obtenir les builds automatiques à partir du serveur de builds Kudu d’Azure App Service, assurez-vous que la racine du référentiel contient les fichiers appropriés de votre projet.To get automatic builds from Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

RuntimeRuntime Fichiers du répertoire racineRoot directory files
ASP.NET (Windows uniquement)ASP.NET (Windows only) *.sln, *.csproj ou default.aspx*.sln, *.csproj, or default.aspx
ASP.NET CoreASP.NET Core *.sln ou *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (Linux uniquement)Ruby (Linux only) GemfileGemfile
Node.jsNode.js server.js, app.js ou package.json avec un script de démarrageserver.js, app.js, or package.json with a start script
PythonPython *.py, requirements.txt ou runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htm, default.html, default.asp, index.htm, index.html ou iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
WebJobsWebJobs <job_name>/run.<extension> sous App_Data/jobs/continuous pour les WebJobs continus ou App_Data/jobs/triggered pour les WebJobs déclenchés.<job_name>/run.<extension> under App_Data/jobs/continuous for continuous WebJobs, or App_Data/jobs/triggered for triggered WebJobs. Pour plus d’informations, consultez la documentation Kudu relative aux WebJobs.For more information, see Kudu WebJobs documentation.
FonctionsFunctions Consultez Déploiement continu pour Azure Functions.See Continuous deployment for Azure Functions.

Pour personnaliser votre déploiement, vous pouvez inclure un fichier .deployment dans la racine du dépôt.To customize your deployment, include a .deployment file in the repository root. Pour plus d’informations, consultez Personnaliser les déploiements et Personnaliser un script de déploiement.For more information, see Customize deployments and Custom deployment script.

Notes

Si vous développez dans Visual Studio, laissez Visual Studio créer un dépôt pour vous.If you develop in Visual Studio, let Visual Studio create a repository for you. Le projet est immédiatement prêt à être déployé à l’aide de Git.The project is immediately ready to be deployed by using Git.

Utiliser Azure Cloud ShellUse Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell vous permet d’utiliser bash ou PowerShell pour travailler avec les services Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Pour lancer Azure Cloud Shell :To launch Azure Cloud Shell:

OptionOption Exemple/LienExample/Link
Sélectionnez Essayer dans le coin supérieur droit d’un bloc de code.Select Try It in the upper-right corner of a code block. La sélection de Essayer ne copie pas automatiquement le code dans Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemple Essayer pour Azure Cloud Shell
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Lancer Cloud Shell dans une nouvelle fenêtreLaunch Cloud Shell in a new window
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Bouton Cloud Shell du portail Azure

Pour exécuter le code de cet article dans Azure Cloud Shell :To run the code in this article in Azure Cloud Shell:

  1. Lancez Cloud Shell.Launch Cloud Shell.
  2. Sélectionnez le bouton Copier dans un bloc de code pour copier le code.Select the Copy button on a code block to copy the code.
  3. Collez le code dans la session Cloud Shell avec Ctrl+Maj+V sur Windows et Linux, ou Cmd+ Maj+V sur macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Appuyez sur Entrée pour exécuter le code.Press Enter to run the code.

Déployer avec un serveur de builds KuduDeploy with Kudu build server

Pour permettre un déploiement Git local pour votre application avec le serveur de builds App Service Kudu, le plus simple consiste à utiliser Azure Cloud Shell.The easiest way to enable local Git deployment for your app with the Kudu App Service build server is to use Azure Cloud Shell.

Configuration d’un utilisateur de déploiementConfigure a deployment user

Vous pouvez déployer le protocole FTP et Git local sur une application web Azure en faisant appel à un utilisateur de déploiement.FTP and local Git can deploy to an Azure web app by using a deployment user. Une fois que vous avez créé votre utilisateur de déploiement, vous pouvez l’utiliser pour tous vos déploiements Azure.Once you configure your deployment user, you can use it for all your Azure deployments. Votre nom d’utilisateur et votre mot de passe de déploiement au niveau du compte sont différents de vos informations d’identification de l’abonnement Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Pour configurer l’utilisateur de déploiement, exécutez la commande az webapp deployment user set dans Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Remplacez <username> et <password> par un nom d’utilisateur et un mot de passe de déploiement.Replace <username> and <password> with a deployment user username and password.

  • Le nom d’utilisateur doit être unique dans Azure et, pour les push Git locaux, ne doit pas contenir le symbole « @ ».The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • Le mot de passe doit comporter au moins huit caractères et inclure deux des trois éléments suivants : lettres, chiffres et symboles.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

La sortie JSON affiche le mot de passe comme étant null.The JSON output shows the password as null. Si vous obtenez une erreur 'Conflict'. Details: 409, modifiez le nom d’utilisateur.If you get a 'Conflict'. Details: 409 error, change the username. Si vous obtenez une erreur 'Bad Request'. Details: 400, utilisez un mot de passe plus fort.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Enregistrez le nom d’utilisateur et le mot de passe à utiliser pour déployer vos applications web.Record your username and password to use to deploy your web apps.

Obtenir l'URL de déploiementGet the deployment URL

Pour obtenir l'URL permettant d'activer le déploiement Git local pour une application existante, exécutez az webapp deployment source config-local-git dans Cloud Shell.To get the URL to enable local Git deployment for an existing app, run az webapp deployment source config-local-git in the Cloud Shell. Remplacez <app-name> et <group-name> par les noms de votre application et son groupe de ressources Azure.Replace <app-name> and <group-name> with the names of your app and its Azure resource group.

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

Pour créer une application Git, vous pouvez également exécuter az webapp create dans Cloud Shell avec le paramètre --deployment-local-git.Or, to create a new Git-enabled app, run az webapp create in the Cloud Shell with the --deployment-local-git parameter. Remplacez <app-name>, <group-name> et <plan-name> par les noms de votre nouvelle application Git, de son groupe de ressources Azure et de son plan Azure App Service.Replace <app-name>, <group-name>, and <plan-name> with the names for your new Git app, its Azure resource group, and its Azure App Service plan.

az webapp create --name <app-name> --resource-group <group-name> --plan <plan-name> --deployment-local-git

L’une ou l’autre des commandes renvoie une URL comme : https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git.Either command returns a URL like: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Utilisez cette URL pour déployer votre application à l’étape suivante.Use this URL to deploy your app in the next step.

Plutôt que d'utiliser cette URL au niveau du compte, vous pouvez également activer Git local à l’aide des informations d’identification au niveau de l’application.Instead of using this account-level URL, you can also enable local Git by using app-level credentials. Azure App Service génère automatiquement ces informations d’identification pour chaque application.Azure App Service automatically generates these credentials for every app.

Pour obtenir les informations d'identification, exécutez la commande suivante dans Cloud Shell.Get the app credentials by running the following command in the Cloud Shell. Remplacez <app-name> et <group-name> par le nom de votre application et le nom du groupe de ressources Azure.Replace <app-name> and <group-name> with your app's name and Azure resource group name.

az webapp deployment list-publishing-credentials --name <app-name> --resource-group <group-name> --query scmUri --output tsv

Utilisez l’URL renvoyée pour déployer votre application à l’étape suivante.Use the URL that returns to deploy your app in the next step.

Déployer l’application webDeploy the web app

  1. Ouvrez une fenêtre de terminal local vers votre référentiel Git local et ajoutez un référentiel distant Azure.Open a local terminal window to your local Git repository, and add an Azure remote. Dans la commande suivante, remplacez <url> par l’URL spécifique à l’utilisateur de déploiement ou l’URL spécifique à l’application que vous avez obtenue à l’étape précédente.In the following command, replace <url> with the deployment user-specific URL or app-specific URL you got from the previous step.

    git remote add azure <url>
    
  2. Effectuez une transmission de type push vers Azure avec git push azure master.Push to the Azure remote with git push azure master.

  3. Dans la fenêtre Git Credential Manager, entrez votre mot de passe d'utilisateur de déploiement, et non votre mot de passe de connexion Azure.In the Git Credential Manager window, enter your deployment user password, not your Azure sign-in password.

  4. Passez en revue la sortie.Review the output. Vous pouvez voir une automation spécifique au runtime, comme MSBuild pour ASP.NET, npm install pour Node.js et pip install pour Python.You may see runtime-specific automation, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

  5. Dans le portail Azure, accédez à votre application pour vérifier que le contenu a été déployé.Browse to your app in the Azure portal to verify that the content is deployed.

Déployer avec des builds Azure PipelinesDeploy with Azure Pipelines builds

Si votre compte dispose des autorisations nécessaires, vous pouvez configurer Azure Pipelines (préversion) afin d'activer le déploiement Git local pour votre application.If your account has the necessary permissions, you can set up Azure Pipelines (Preview) to enable local Git deployment for your app.

  • Votre compte Azure doit être autorisé à écrire dans Azure Active Directory et à créer un service.Your Azure account must have permissions to write to Azure Active Directory and create a service.

  • Votre compte Azure doit disposer du rôle Propriétaire dans votre abonnement Azure.Your Azure account must have the Owner role in your Azure subscription.

  • Vous devez être administrateur dans le projet Azure DevOps que vous souhaitez utiliser.You must be an administrator in the Azure DevOps project you want to use.

Pour activer le déploiement Git local pour votre application avec Azure Pipelines (préversion) :To enable local Git deployment for your app with Azure Pipelines (Preview):

  1. Dans le portail Azure, accédez à la page de votre application Azure App Service, puis sélectionnez Centre de déploiement dans le menu de gauche.Navigate to your Azure App Service app page in the Azure portal, and select Deployment Center in the left menu.

  2. Dans la page Centre de déploiement, sélectionnez Git local, puis Continuer.On the Deployment Center page, select Local Git, and then select Continue.

    Sélectionner Git local, puis Continuer

  3. Dans la page Fournisseur de générations, sélectionnez Azure pipelines (préversion) , puis Continuer.On the Build provider page, select Azure Pipelines (Preview), and then select Continue.

    Sélectionnez Azure Pipelines (préversion), puis Continuer.

  4. Dans la page Configurer, configurez une nouvelle organisation Azure DevOps ou spécifiez une organisation existante, puis sélectionnez Continuer.On the Configure page, configure a new Azure DevOps organization, or specify an existing organization, and then select Continue.

    Notes

    Si votre organisation Azure DevOps existante n'est pas répertoriée, vous serez peut-être amené à devoir la lier à votre abonnement Azure.If your existing Azure DevOps organization isn't listed, you may need to link it to your Azure subscription. Pour plus d’informations, consultez Définir votre pipeline de mise en production CD.For more information, see Define your CD release pipeline.

  5. En fonction du niveau tarifaire de votre plan App Service, il peut arriver qu’une page Déployer en préproduction s'affiche.Depending on your App Service plan pricing tier, you may see a Deploy to staging page. Choisissez si vous souhaitez activer des emplacements de déploiement, puis sélectionnez Continuer.Choose whether to enable deployment slots, and then select Continue.

  6. Dans la page Résumé, vérifiez les paramètres, puis sélectionnez Terminer.On the Summary page, review the settings, and then select Finish.

  7. Une fois le pipeline Azure prêt, copiez l’URL du référentiel Git à partir de la page Centre de déploiement pour l'utiliser à l'étape suivante.When the Azure Pipeline is ready, copy the Git repository URL from the Deployment Center page to use in the next step.

    Copier l’URL du référentiel Git

  8. Dans votre fenêtre de terminal local, ajoutez un référentiel distant Azure à votre référentiel Git local.In your local terminal window, add an Azure remote to your local Git repository. Dans la commande, remplacez <url> par l’URL du référentiel Git que vous avez obtenu à l’étape précédente.In the command, replace <url> with the URL of the Git repository that you got from the previous step.

    git remote add azure <url>
    
  9. Effectuez une transmission de type push vers Azure avec git push azure master.Push to the Azure remote with git push azure master.

  10. Dans la page Git Credential Manager, connectez-vous avec votre nom d'utilisateur visualstudio.com.On the Git Credential Manager page, sign in with your visualstudio.com username. Pour découvrir d’autres méthodes d’authentification, consultez Vue d’ensemble de l’authentification Azure DevOps Services.For other authentication methods, see Azure DevOps Services authentication overview.

  11. Une fois le déploiement terminé, vous pouvez afficher la progression de la génération sur https://<azure_devops_account>.visualstudio.com/<project_name>/_build et la progression du déploiement sur https://<azure_devops_account>.visualstudio.com/<project_name>/_release.Once deployment is finished, view the build progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_build, and the deployment progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_release.

  12. Dans le portail Azure, accédez à votre application pour vérifier que le contenu a été déployé.Browse to your app in the Azure portal to verify that the content is deployed.

Que se passe-t-il au niveau de mon application pendant le déploiement ?What happens to my app during deployment?

Toutes les méthodes de déploiement officiellement prises en charge apportent des modifications aux fichiers dans le dossier /home/site/wwwroot de votre application.All the officially supported deployment methods make changes to the files in the /home/site/wwwroot folder of your app. Ce sont ces mêmes fichiers qui sont exécutés en production.These files are the same ones that are run in production. Par conséquent, le déploiement peut échouer si des fichiers sont verrouillés.Therefore, the deployment can fail because of locked files. L’application en production peut également se comporter de façon imprévisible pendant le déploiement, car tous les fichiers ne sont pas tous mis à jour en même temps.The app in production may also behave unpredictably during deployment, because not all the files updated at the same time. Il existe différentes manières d’éviter ces problèmes :There are a few different ways to avoid these issues:

Résoudre les problèmes de déploiementTroubleshoot deployment

Les messages d'erreur suivants peuvent s'afficher lorsque vous utilisez Git pour publier une application App Service dans Azure :You may see the following common error messages when you use Git to publish to an App Service app in Azure:

MessageMessage Cause :Cause Résolution :Resolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] L’application n’est pas opérationnelle.The app isn't up and running. Démarrez l’application dans le portail Azure.Start the app in the Azure portal. Le déploiement Git n'est pas disponible lorsque l’application web est arrêtée.Git deployment isn't available when the web app is stopped.
Couldn't resolve host 'hostname' Les informations d’adresse du référentiel «Azure» distant ne sont pas correctes.The address information for the 'azure' remote is incorrect. Utilisez la commande git remote -v pour répertorier tous les référentiels distants avec l’URL associée.Use the git remote -v command to list all remotes, along with the associated URL. Vérifiez que l'URL du référentiel distant « azure » est correcte.Verify that the URL for the 'azure' remote is correct. Si nécessaire, supprimez et recréez ce référentiel distant au moyen de l’URL correcte.If needed, remove and recreate this remote using the correct URL.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. Vous n’avez pas spécifié de branche pendant git push ou vous n'avez pas défini la valeur push.default dans .gitconfig.You didn't specify a branch during git push, or you haven't set the push.default value in .gitconfig. Réexécutez git push, en spécifiant la branche maîtresse : git push azure master.Run git push again, specifying the master branch: git push azure master.
src refspec [branchname] does not match any. Vous avez tenté d’effectuer une transmission de type push sur une autre branche que la branche maîtresse du référentiel distant « azure ».You tried to push to a branch other than master on the 'azure' remote. Réexécutez git push, en spécifiant la branche maîtresse : git push azure master.Run git push again, specifying the master branch: git push azure master.
RPC failed; result=22, HTTP code = 5xx. Cette erreur peut se produire si vous essayez d’envoyer (push) un dépôt Git volumineux via HTTPS.This error can happen if you try to push a large git repository over HTTPS. Modifiez la configuration Git sur l’ordinateur local pour agrandir le postBuffer.Change the git configuration on the local machine to make the postBuffer bigger. Par exemple : git config --global http.postBuffer 524288000.For example: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Vous avez déployé une application Node.js contenant un fichier package.json spécifiant des modules obligatoires supplémentaires.You deployed a Node.js app with a package.json file that specifies additional required modules. Examinez les messages d'erreur npm ERR! préalables à cette erreur pour plus de contexte sur l’échec.Review the npm ERR! error messages before this error for more context on the failure. Voici les causes connues de cette erreur et les messages npm ERR! correspondants :The following are the known causes of this error, and the corresponding npm ERR! messages:

Fichier package.json incorrect: npm ERR! Couldn't read dependencies.Malformed package.json file: npm ERR! Couldn't read dependencies.

Un module natif n’a pas de distribution binaire pour Windows :Native module doesn't have a binary distribution for Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
oror
`npm ERR!`npm ERR! [modulename@version] preinstall: \make[modulename@version] preinstall: \make
gmake`gmake`

Ressources supplémentairesAdditional resources