Déploiement Git local vers 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.

Remarque

Quand l’authentification de base SCM est désactivée, le déploiement Git local ne fonctionne pas et vous ne pouvez pas configurer le déploiement Git local dans le Centre de déploiement de l’application.

Prérequis

Pour suivre les étapes décrites dans ce guide de procédures :

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

  • Installer Git.

  • Obtenez un référentiel Git local comprenant le code que vous souhaitez déployer. Pour télécharger un exemple de référentiel, exécutez la commande suivante dans la fenêtre de terminal locale :

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

Préparer votre dépôt

Pour obtenir des builds automatiques auprès du serveur de builds Azure App Service, vérifiez que la racine de votre référentiel contient les fichiers appropriés de votre projet.

Runtime Fichiers du répertoire racine
ASP.NET (Windows uniquement) *.sln, *.csproj ou default.aspx
ASP.NET Core *.sln ou *.csproj
PHP index.php
Ruby (Linux uniquement) Gemfile
Node.JS server.js, app.js ou package.json avec un script de démarrage
Python *.py, requirements.txt ou runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html ou iisstart.htm
WebJobs <job_name>/run.<extension> sous App_Data/jobs/continuous pour WebJobs continus ou App_Data/jobs/triggered pour WebJobs déclenchées. Pour plus d’informations, consultez la documentation Kudu relative aux WebJobs.
Fonctions Consultez Déploiement continu pour Azure Functions.

Pour personnaliser votre déploiement, vous pouvez inclure un fichier .deployment dans la racine du dépôt. Pour plus d’informations, consultez Personnaliser les déploiements et Personnaliser un script de déploiement.

Notes

Si vous utilisez dans Visual Studio, laissez Visual Studio vous créer un référentiel. Votre projet sera immédiatement prêt pour le déploiement via Git.

Configuration d’un utilisateur de déploiement

Consultez Configurer les informations d’identification de déploiement pour Azure App Service. Vous pouvez utiliser les informations d’identification de portée utilisateur ou les informations d’identification de portée application.

Créer une application compatible Git

Si vous disposez déjà d’une application App Service et que vous souhaitez configurer le déploiement Git local pour celle-ci, consultez plutôt Configurer une application existante.

Exécutez az webapp create avec l'option --deployment-local-git. Par exemple :

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

La sortie contient une URL, telle que : https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Utilisez cette URL pour déployer votre application à l’étape suivante.

Configurer une application existante

Si vous n’avez pas encore d’application, consultez plutôt Créer une application compatible Git.

Exécutez az webapp deployment source config-local-git. Par exemple :

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

La sortie contient une URL, telle que : https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Utilisez cette URL pour déployer votre application à l’étape suivante.

Conseil

Cette URL contient le nom d’utilisateur de déploiement de portée utilisateur. Si vous le souhaitez, vous pouvez plutôt utiliser les informations d’identification de portée application.

Déployer l’application web

  1. Dans une fenêtre de terminal local, remplacez le répertoire par la racine de votre référentiel Git et ajoutez un dépôt distant Git en utilisant l’URL que vous avez obtenue à partir de votre application. Si la méthode que vous avez choisie ne vous donne pas d’URL, utilisez https://<app-name>.scm.azurewebsites.net/<app-name>.git avec le nom de votre application dans <app-name>.

    git remote add azure <url>
    

    Notes

    Si vous avez créé une application Git dans PowerShell à l’aide de New-AzWebApp, le dépôt distant est déjà créé pour vous.

  2. Envoyez (push) vers le site distant Azure avec git push azure master (voir Modifier la branche de déploiement).

  3. Dans la fenêtre Gestionnaire des informations d’identification Git, entrez vos informations d’identification pour l’étendue de l’utilisateur ou de l’application, et non les informations d’identification de votre connexion Azure.

    Si l’URL de votre dépôt distant Git contient déjà le nom d’utilisateur et le mot de passe, vous ne serez pas invité à le faire.

  4. Passez en revue la sortie. Vous verrez probablement une automatisation spécifique au runtime, comme MSBuild pour ASP.NET, npm install pour Node.js et pip install pour Python.

  5. Dans le portail Azure, accédez à votre application pour vérifier que le contenu a été déployé.

Modifier la branche de déploiement

Lorsque vous envoyez (push) des commits vers votre référentiel App Service, App Service déploie les fichiers dans la branche master par défaut. Comme de nombreux référentiels Git se déplacent de master à main, vous devez vous assurer que vous envoyez (push) vers la bonne branche dans le référentiel App Service de l’une des deux manières suivantes :

  • Déployer sur master de manière explicite avec une commande comme :

    git push azure main:master
    
  • Modifiez la branche de déploiement en définissant le paramètre d’application DEPLOYMENT_BRANCH, puis envoyez (push) les commits vers la branche personnalisée. Pour le faire avec Azure CLI :

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    

    Vous pouvez également modifier le paramètre d’application DEPLOYMENT_BRANCH dans le Portail Azure, en sélectionnant Variables d’environnement sous Paramètres et en ajoutant un nouveau paramètre d’application avec le nom DEPLOYMENT_BRANCH et la valeur main.

Résoudre les problèmes de déploiement

Vous risquez de voir les messages d’erreur courants suivants lorsque vous utilisez Git pour publier une application App Service dans Azure :

Message Cause Résolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] L’application n’est pas opérationnelle. Démarrez l’application dans le portail Azure. Le déploiement Git n'est pas disponible lorsque l’application web est arrêtée.
Couldn't resolve host 'hostname' Les informations d’adresse du dépôt distant azure ne sont pas correctes. Utilisez la commande git remote -v pour répertorier tous les référentiels distants avec l’URL associée. Vérifiez que l’URL du dépôt distant azure est correcte. Si nécessaire, supprimez et recréez ce référentiel distant au moyen de l’URL correcte.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Vous n’avez pas spécifié de branche pendant git push ou vous n'avez pas défini la valeur push.default dans .gitconfig. Réexécutez git push, en spécifiant la branche primaire : git push azure main.
Error - Changes committed to remote repository but deployment to website failed. Vous avez envoyé (push) une branche locale qui ne correspond pas à la branche de déploiement d’applications sur azure. Vérifiez que la branche actuelle est master. Pour modifier la branche par défaut, utilisez le paramètre d’application DEPLOYMENT_BRANCH (voir Modifier la branche de déploiement).
src refspec [branchname] does not match any. Vous avez tenté un envoi (push) vers une autre branche que la branche primaire du dépôt distant azure. Réexécutez git push, en spécifiant la branche primaire : git push azure main.
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. Modifiez la configuration Git sur l’ordinateur local pour agrandir le postBuffer. Par exemple : 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. Examinez les messages d'erreur npm ERR! préalables à cette erreur pour plus de contexte sur l’échec. Voici les causes connues de cette erreur et les messages npm ERR! correspondants :

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

Un module natif n’a pas de distribution binaire pour Windows :
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
ou
npm ERR! [modulename@version] preinstall: \make \|\| gmake\

Plus de ressources