Lokale Git-Bereitstellung in Azure App Service

In dieser Anleitung erfahren Sie, wie Sie Ihre App aus einem Git-Repository auf dem lokalen Computer in Azure App Service bereitstellen.

Voraussetzungen

Ausführen der Schritte in dieser Anleitung:

  • Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

  • Git installieren.

  • Über ein lokales Git-Repository mit dem Code verfügen, den Sie bereitstellen möchten. Führen Sie zum Herunterladen eines Beispielrepositorys den folgenden Befehl in Ihrem lokalen Terminalfenster aus:

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

Vorbereiten Ihres Repositorys

Um automatische Builds vom Azure App Service-Buildserver zu erhalten, muss das Stammverzeichnis Ihres Repositorys die richtigen Dateien enthalten.

Typ Stammverzeichnisdateien
ASP.NET (nur Windows) *.sln, *.csproj oder default.aspx
ASP.NET Core *.sln oder *.csproj
PHP index.php
Ruby (nur Linux) Gemfile
Node.js server.js, app.js oder package.json mit einem Startskript
Python *.py, requirements.txt oder runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html oder iisstart.htm
WebJobs <Auftragsname>/run.<extension> unter App_Data/jobs/continuous (für fortlaufende WebJobs) oder App_Data/jobs/triggered (für ausgelöste WebJobs). Weitere Informationen finden Sie in der Kudu-Dokumentation zu WebJobs.
Functions Siehe Kontinuierliche Bereitstellung für Azure Functions.

Zum Anpassen Ihrer Bereitstellung schließen Sie eine Datei vom Typ .deployment im Repositorystamm ein. Weitere Informationen finden Sie unter Anpassen von Bereitstellungen und Benutzerdefiniertes Bereitstellungsskript.

Hinweis

Wenn Sie Visual Studio verwenden, kann Visual Studio ein Repository für Sie erstellen. Ihr Projekt ist dann sofort für die Bereitstellung über Git bereit.

Konfigurieren eines Bereitstellungsbenutzers

Weitere Informationen finden Sie unter Konfigurieren von Anmeldeinformationen für die Azure App Service-Bereitstellung. Sie können Anmeldeinformationen für den Benutzerbereich oder Anmeldeinformationen für den Anwendungsbereich verwenden.

Erstellen einer Git-fähigen App

Wenn Sie bereits über eine App Service-App verfügen und dafür die lokale Git-Bereitstellung konfigurieren möchten, lesen Sie stattdessen unter Konfigurieren einer vorhandenen App nach.

Führen Sie az webapp create mit der Option --deployment-local-git aus. Beispiel:

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

Die Ausgabe enthält eine URL wie https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Verwenden Sie diese URL zum Bereitstellen Ihrer App im nächsten Schritt.

Konfigurieren einer vorhandenen App

Wenn Sie noch keine App erstellt haben, lesen Sie stattdessen unter Erstellen einer Git-fähigen App nach.

Führen Sie az webapp deployment source config-local-git aus. Beispiel:

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

Die Ausgabe enthält eine URL wie https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Verwenden Sie diese URL zum Bereitstellen Ihrer App im nächsten Schritt.

Tipp

Diese URL enthält den Benutzernamen für die Bereitstellung im Benutzerbereich. Auf Wunsch können Sie stattdessen auch die Anmeldeinformationen für den Anwendungsbereich verwenden.

Bereitstellen der Web-App

  1. Wechseln Sie in einem lokalen Terminalfenster zum Stammverzeichnis Ihres Git-Repositorys, und fügen Sie mithilfe der URL, die Sie aus Ihrer App abgerufen haben, ein Git-Remoterepository hinzu. Wenn Sie mit der ausgewählten Methode keine URL abrufen können, verwenden Sie https://<app-name>.scm.azurewebsites.net/<app-name>.git mit dem Namen Ihrer App in <app-name>.

    git remote add azure <url>
    

    Hinweis

    Wenn Sie eine Git-fähige App in PowerShell mithilfe von „New-AzWebApp“ erstellt haben, wurde das Remoterepository bereits für Sie erstellt.

  2. Führen Sie einen Pushvorgang an den Azure-Remotecomputer mit git push azure master durch. (Informationen hierzu finden Sie unter Ändern des Bereitstellungsbranchs.)

  3. Geben Sie im Fenster Git Credential Manager Ihre Anmeldeinformationen für den Benutzerbereich oder den Anwendungsbereich ein. Verwenden Sie hier nicht Ihre Anmeldeinformationen für die Azure-Anmeldung.

    Wenn Ihre Git-Remote-URL bereits den Benutzernamen und das Kennwort enthält, werden Sie zu deren Eingabe aufgefordert.

  4. Überprüfen Sie die Ausgabe. Sie enthält möglicherweise eine laufzeitspezifische Automatisierung wie MSBuild für ASP.NET, npm install für Node.js und pip install für Python.

  5. Navigieren Sie im Azure-Portal zu Ihrer App, um zu überprüfen, ob der Inhalt bereitgestellt wurde.

Ändern des Bereitstellungsbranchs

Wenn Sie Commits per Push an Ihr App Service-Repository übertragen, stellt App Service die Dateien standardmäßig im master-Branch bereit. Da viele Git-Repositorys von master in main verschoben werden, müssen Sie mit einer von zwei Methoden sicherstellen, dass der Pushvorgang in den richtigen Branch im App Service-Repository erfolgt:

  • Führen Sie die Bereitstellung in master explizit durch einen Befehl wie den folgenden durch:

    git push azure main:master
    
  • Ändern Sie den Bereitstellungsbranch, indem Sie die App-Einstellung DEPLOYMENT_BRANCH festlegen und dann Commits per Push an den benutzerdefinierten Branch übertragen. Vorgehensweise über die Azure CLI:

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

Problembehandlung bei der Bereitstellung

Möglicherweise werden die folgenden häufigen Fehlermeldungen angezeigt, wenn Sie eine App Service-App mithilfe von Git in Azure veröffentlichen:

`Message` Ursache Lösung
Unable to access '[siteURL]': Failed to connect to [scmAddress] Die App wird nicht ordnungsgemäß ausgeführt. Starten Sie die App im Azure-Portal. Die Git-Bereitstellung ist nicht verfügbar, wenn die Web-App beendet wurde.
Couldn't resolve host 'hostname' Die Adressinformationen für die ‚azure‘-Remotewebsite sind falsch. Verwenden Sie den Befehl git remote -v, um alle Remotewebsites zusammen mit der jeweils zugehörigen URL aufzulisten. Überprüfen Sie, ob die URL für die 'azure'-Remotewebsite korrekt ist. Entfernen Sie diese Remote-Website bei Bedarf und erstellen Sie sie mit der korrekten URL neu.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Sie haben während git push keinen Branch angegeben, oder Sie haben den Wert push.default in .gitconfig nicht festgelegt. Führen Sie git push erneut aus, und geben Sie dabei den Hauptbranch an: git push azure main.
Error - Changes committed to remote repository but deployment to website failed. Sie haben einen lokalen Branch gepusht, der nicht mit dem App-Bereitstellungsbranch auf „azure“ übereinstimmt. Vergewissern Sie sich, dass Current Branch gleich master ist. Um den Standardbranch zu ändern, verwenden Sie die Anwendungseinstellung DEPLOYMENT_BRANCH. (Informationen hierzu finden Sie unter Ändern des Bereitstellungsbranchs.)
src refspec [branchname] does not match any. Sie haben versucht, einen anderen Branch als den Hauptbranch mithilfe von Push in das „azure“-Remoterepository zu übertragen. Führen Sie git push erneut aus, und geben Sie dabei den Hauptbranch an: git push azure main.
RPC failed; result=22, HTTP code = 5xx. Dieser Fehler kann auftreten, wenn Sie versuchen, ein großes Git-Repository über HTTPS mithilfe von Push zu übertragen. Ändern Sie die Git-Konfiguration auf dem lokalen Computer, um den postBuffer zu vergrößern. Beispiel: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Sie haben eine Node.js-App mit einer Datei von Typ package.json bereitgestellt, die zusätzliche erforderliche Module angibt. Überprüfen Sie die Fehlermeldungen vom Typ npm ERR! vor diesem Fehler, um mehr Kontext zu erhalten. Es folgen die bekannten Ursachen für diesen Fehler und die entsprechenden Meldungen vom Typ npm ERR!:

Falsch formatierte „package.json“-Datei: npm ERR! Couldn't read dependencies.

Systemeigenes Modul verfügt über keine binäre Verteilung für Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
oder
npm ERR! [modulename@version] preinstall: \make || gmake\

Zusätzliche Ressourcen