Continuous Deployment in Azure App Service

Azure App Service ermöglicht durch das Abrufen der neuesten Updates eine kontinuierliche Bereitstellung aus GitHub-, Bitbucket- und Azure Repos-Repositorys.

Hinweis

Die Seite Development Center (klassisch) im Azure-Portal, bei der es sich um eine frühere Version der Bereitstellungsfunktionalität handelt, wurde im März 2021 als veraltet gekennzeichnet. Diese Änderung wirkt sich nicht auf vorhandene Bereitstellungseinstellungen in Ihrer App aus, und Sie können die App-Bereitstellung weiterhin über die Seite Bereitstellungscenter im Portal verwalten.

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 > (für fortlaufende WebJobs) oder < (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 der Bereitstellungsquelle

  1. Wechseln Sie im Azure-Portal zur Verwaltungsseite für Ihre App Service-App.

  2. Wählen Sie im linken Bereich Bereitstellungscenter aus. Wählen Sie dann Einstellungen aus.

  3. Wählen Sie im Feld Quelle eine der CI/CD-Optionen aus:

    Screenshot that shows how to choose the deployment source.

Wählen Sie die Registerkarte für Ihren Buildanbieter aus, um den Vorgang fortzusetzen.

  1. GitHub Actions sind der Standardbuildanbieter. Um den Anbieter zu ändern, klicken Sie auf Anbieter ändernApp Service-Builddienst (Kudu) OK.

    Hinweis

    Um Azure Pipelines als Buildanbieter für Ihre App Service-App zu verwenden, konfigurieren Sie CI/CD direkt aus Azure Pipelines. Führen Sie die Konfiguration nicht in App Service durch. Die Option Azure Pipelines weist Sie lediglich in die richtige Richtung.

  2. Wenn Sie zum ersten Mal eine Bereitstellung aus GitHub durchführen, klicken Sie auf Autorisieren, und befolgen Sie die Anweisungen für die Autorisierung. Wenn Sie die Bereitstellung aus dem Repository eines anderen Benutzers durchführen möchten, klicken Sie auf Konto ändern.

  3. Nachdem Sie Ihr Azure-Konto bei GitHub autorisiert haben, wählen Sie die Organisation, das Repository und den Branch für die CI/CD-Konfiguration aus. Wenn Sie eine Organisation oder ein Repository nicht finden, müssen Sie möglicherweise zusätzliche Berechtigungen für GitHub aktivieren. Weitere Informationen finden Sie unter Verwalten des Zugriffs auf Repositorys Ihrer Organisation.

  4. Wenn GitHub Actions als Buildanbieter ausgewählt ist, können Sie die gewünschte Workflowdatei über die Dropdownlisten Runtimestapel und Version auswählen. Azure committet diese Workflowdatei in Ihr ausgewähltes GitHub-Repository, um Build- und Bereitstellungsaufgaben zu verarbeiten. Wenn Sie die Datei vor dem Speichern Ihrer Änderungen anzeigen möchten, klicken Sie auf Dateivorschau.

    Hinweis

    App Service erkennt die Sprachstapeleinstellung Ihrer App und wählt die geeignetste Workflowvorlage aus. Wenn Sie eine andere Vorlage auswählen, wird möglicherweise eine App bereitgestellt, die nicht ordnungsgemäß ausgeführt wird. Weitere Informationen finden Sie unter Funktionsweise des GitHub Actions-Buildanbieters.

  5. Wählen Sie Speichern aus.

    Neue Commits im ausgewählten Repository und Branch werden nun fortlaufend in Ihrer App Service-App bereitgestellt. Sie können die Commits und Bereitstellungen auf der Registerkarte Protokolle nachverfolgen.

Deaktivieren der fortlaufenden Bereitstellung

  1. Wechseln Sie im Azure-Portal zur Verwaltungsseite für Ihre App Service-App.

  2. Wählen Sie im linken Bereich Bereitstellungscenter aus. Klicken Sie dann auf EinstellungenTrennen:

    Screenshot that shows how to disconnect your cloud folder sync with your App Service app in the Azure portal.

  3. Standardmäßig bleibt die GitHub Actions-Workflowdatei in Ihrem Repository erhalten, aber sie löst weiterhin die Bereitstellung für Ihre App aus. Um die Datei aus Ihrem Repository zu löschen, wählen Sie Workflowdatei löschen aus.

  4. Klicken Sie auf OK.

Was geschieht während der Bereitstellung mit meiner App?

Alle offiziell unterstützten Bereitstellungsmethoden nehmen Änderungen an den Dateien im Ordner /home/site/wwwroot Ihrer App vor. Diese Dateien werden zum Ausführen Ihrer App verwendet. Daher kann die Bereitstellung aufgrund gesperrter Dateien fehlschlagen. Die App kann sich während der Bereitstellung unvorhersehbar verhalten, da nicht alle Dateien gleichzeitig aktualisiert werden. Dieses Verhalten ist bei kundenorientierten Apps nicht erwünscht. Es gibt mehrere Möglichkeiten zum Umgehen dieser Probleme:

Funktionsweise des GitHub Actions-Buildanbieters

Der GitHub Actions-Buildanbieter ist eine Option für CI/CD aus GitHub. Der Buildanbieter führt zum Einrichten von CI/CD diese Aktionen aus:

  • Legt eine GitHub Actions-Workflowdatei in Ihrem GitHub-Repository ab, um Build- und Bereitstellungsaufgaben für App Service zu verarbeiten.
  • Fügt das Veröffentlichungsprofil für Ihre App als GitHub-Geheimnis hinzu. Die Workflowdatei verwendet dieses Geheimnis für die Authentifizierung bei App Service.
  • Es werden Informationen aus den Protokollen zur Workflowausführung erfasst und auf der Registerkarte Protokolle im Bereitstellungscenter Ihrer App angezeigt.

Sie können den GitHub Actions-Buildanbieter auf folgende Weise anpassen:

  • Anpassen der Workflowdatei, nachdem Sie in Ihrem GitHub-Repository generiert wurde. Weitere Informationen finden Sie unter Workflowsyntax für GitHub Actions. Stellen Sie lediglich sicher, dass der Workflow in App Service bereitgestellt wird, mit der Aktion azure/webapps-deploy.
  • Wenn der ausgewählte Branch geschützt ist, können Sie eine Vorschau der Workflowdatei anzeigen, ohne die Konfiguration zu speichern, und die Datei dann manuell in Ihr Repository einfügen. Bei dieser Methode erfolgt keine Protokollintegration in das Azure-Portal.
  • Anstatt ein Veröffentlichungsprofil zu verwenden, führen Sie die Bereitstellung mithilfe eines Dienstprinzipals in Azure Active Directory durch.

Authentifizierung mithilfe eines Dienstprinzipals

Diese optionale Konfiguration ersetzt die Standardauthentifizierung mit Veröffentlichungsprofilen in der generierten Workflowdatei.

  1. Sie können mit dem Befehl az ad sp create-for-rbac in der Azure CLI einen Dienstprinzipal generieren. Ersetzen Sie im folgenden Beispiel <subscription-id>, <group-name> und <app-name> durch Ihre eigenen Werte:

    az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                                --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                                --sdk-auth
    

    Wichtig

    Erteilen Sie aus Sicherheitsgründen dem Dienstprinzipal den minimal erforderlichen Zugriff. Der Bereich im vorherigen Beispiel ist auf die spezifische App Service-App und nicht auf die gesamte Ressourcengruppe beschränkt.

  2. Speichern Sie die gesamte JSON-Ausgabe für den nächsten Schritt, einschließlich {} der obersten Ebene.

  3. Wählen Sie in GitHub in Ihrem Repository EinstellungenGeheimnisseNeues Geheimnis hinzufügen aus.

  4. Fügen Sie die gesamte JSON-Ausgabe aus dem Azure CLI-Befehl in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis einen Namen wie AZURE_CREDENTIALS.

  5. Überarbeiten Sie in der Workflowdatei, die über das Bereitstellungscenter generiert wurde, den Schritt azure/webapps-deploy so ab, dass er dem folgenden Beispiel entspricht (es handelt sich um eine geänderte Node.js-Workflowdatei):

    - name: Sign in to Azure 
    # Use the GitHub secret you added.
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: Deploy to Azure Web App
    # Remove publish-profile.
    - uses: azure/webapps-deploy@v2
      with:
        app-name: '<app-name>'
        slot-name: 'production'
        package: .
    - name: Sign out of Azure.
      run: |
        az logout
    

Bereitstellen aus anderen Repositorys

Für Windows-Apps können Sie die Continuous Deployment-Bereitstellung aus einem Git- oder Mecurial-Cloudrepository ohne direkte Portalunterstützung manuell konfigurieren (beispielsweise GitLab). Wählen Sie hierzu in der Dropdownliste Quelle die Option Externes Git aus. Weitere Informationen finden Sie unter Einrichten von Continuous Deployment mit manuellen Schritten.

Weitere Ressourcen