Continuous Deployment in Azure App Service
Hinweis
Ab dem 1. Juni 2024 haben alle neu erstellten App Service-Apps die Möglichkeit, einen eindeutigen Standardhostnamen mit der Namenskonvention <app-name>-<random-hash>.<region>.azurewebsites.net
zu erstellen. Vorhandene App-Namen bleiben unverändert.
Beispiel: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Ausführlichere Informationen finden Sie unter Eindeutiger Standardhostname für App Service-Ressourcen.
Azure App Service ermöglicht durch das Abrufen der neuesten Updates eine kontinuierliche Bereitstellung aus GitHub-, Bitbucket- und Azure Repos-Repositorys.
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 | <job_name>/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 der Bereitstellungsquelle
Wechseln Sie im Azure-Portal zur Verwaltungsseite für Ihre App Service-App.
Wählen Sie im linken Bereich Bereitstellungscenter aus. Wählen Sie dann Einstellungen aus.
Wählen Sie im Feld Quelle eine der CI/CD-Optionen aus:
Wählen Sie die Registerkarte für Ihren Buildanbieter aus, um den Vorgang fortzusetzen.
GitHub Actions sind der Standardbuildanbieter. Um den Anbieter zu ändern, klicken Sie auf Anbieter ändern>App Service-Builddienst>OK.
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.
Nachdem Sie Ihr Azure-Konto bei GitHub autorisiert haben, wählen Sie das gewünschte Unternehmen, das gewünschte Repository und den gewünschten Branch 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.
Wählen Sie unter Authentifizierungstyp die Option Benutzerseitig zugewiesenen Identität aus, um die Sicherheit zu erhöhen. Weitere Informationen finden Sie unter Häufig gestellte Fragen.
Hinweis
Wenn Ihr Azure-Konto über die erforderlichen Berechtigungen für die Option Benutzerseitig zugewiesene verwaltete Identität verfügt, erstellt Azure eine benutzerseitig zugewiesene verwaltete Identität für Sie. Ist dies nicht der Fall, arbeiten Sie mit dem Azure-Administrator oder der Azure-Administratorin zusammen, um eine Identität mit der erforderlichen Rolle in Ihrer App zu erstellen, und wählen Sie sie hier in der Dropdownliste aus.
(Optional) Wenn Sie die Datei vor dem Speichern Ihrer Änderungen anzeigen möchten, klicken Sie auf Dateivorschau. App Service wählt eine Workflowvorlage basierend auf der Sprachstapeleinstellung Ihrer App aus und führt dafür einen Commit im ausgewählten GitHub-Repository durch.
Wählen Sie Speichern.
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
Wechseln Sie im Azure-Portal zur Verwaltungsseite für Ihre App Service-App.
Wählen Sie im linken Bereich Bereitstellungscenter aus. Klicken Sie dann auf Einstellungen>Trennen:
Standardmäßig bleibt die GitHub Actions-Workflowdatei in Ihrem Repository erhalten, löst aber weiterhin die Bereitstellung für Ihre App aus. Um die Datei aus Ihrem Repository zu löschen, wählen Sie Workflowdatei löschen aus.
Klickan Sie auf OK.
Was sind die Buildanbieter?
Je nach Ihrer Bereitstellungsquelle im Bereitstellungscenter werden möglicherweise einige Optionen angezeigt, die Sie für Buildanbieter auswählen können. Buildanbieter helfen Ihnen, eine CI/CD-Lösung mit Azure App Service zu erstellen, indem Erstellung, Tests und Bereitstellung automatisiert werden.
Sie sind nicht auf die Buildanbieteroptionen im Bereitstellungscenter beschränkt, aber App Service ermöglicht Ihnen ihre schnelle Einrichtung und bietet eine integrierte Bereitstellungsprotokollierung.
Der GitHub Actions-Buildanbieter ist nur für die GitHub-Bereitstellung verfügbar. Bei der Konfiguration über das Bereitstellungscenter der App werden die folgenden Aktionen zum Einrichten von CI/CD ausgeführt:
- Legt eine GitHub Actions-Workflowdatei in Ihrem GitHub-Repository ab, um Build- und Bereitstellungsaufgaben für App Service zu verarbeiten.
- Fügt für die Standardauthentifizierung das Veröffentlichungsprofil für Ihre App als GitHub-Geheimnis hinzu. Die Workflowdatei verwendet dieses Geheimnis für die Authentifizierung bei App Service.
- Informationen zur benutzerseitig zugewiesenen Identität finden Sie unter Was bewirkt die Option „Benutzerseitig zugewiesene Identität“ für GitHub Actions?.
- Es werden Informationen aus den Protokollen zur Workflowausführung erfasst und auf der Registerkarte Protokolle im Bereitstellungscenter 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 die Standardauthentifizierung oder eine benutzerseitig zugewiesene Identität zu verwenden, können Sie die Bereitstellung auch mithilfe eines Dienstprinzipals in Microsoft Entra ID durchführen. Dies kann nicht im Portal konfiguriert werden.
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:
- Führen Sie die Anwendung direkt aus dem ZIP-Paket aus, ohne Sie zu entpacken.
- Beenden Sie die App oder aktivieren Sie während der Bereitstellung den Offlinemodus der App. Weitere Informationen finden Sie unter Deal with locked files during deployment (Umgang mit gesperrten Dateien während der Bereitstellung).
- Stellen Sie sie in einem Stagingslot bereit, bei dem Automatisch tauschen aktiviert ist.
Häufig gestellte Fragen
- Funktioniert der GitHub Actions-Buildanbieter mit Standardauthentifizierung, wenn die Standardauthentifizierung deaktiviert ist?
- Was bewirkt die Option „Benutzerseitig zugewiesene Identität“ für GitHub Actions?
- Warum wird folgender Fehler angezeigt: „Diese Identität verfügt nicht über Schreibberechtigungen für diese App. Wählen Sie eine andere Identität aus, oder arbeiten Sie mit Ihrem Administrator oder Ihrer Administratorin zusammen, um Ihrer Identität die Rolle „Websitemitwirkender“ für diese App zu gewähren.“?
- Warum wird folgender Fehler angezeigt: „Diese Identität verfügt nicht über Schreibberechtigungen für diese App. Wählen Sie eine andere Identität aus, oder arbeiten Sie mit Ihrem Administrator oder Ihrer Administratorin zusammen, um Ihrer Identität die Rolle „Websitemitwirkender“ für diese App zu gewähren.“?
Funktioniert der GitHub Actions-Buildanbieter mit Standardauthentifizierung, wenn die Standardauthentifizierung deaktiviert ist?
Nein Versuchen Sie, GitHub Actions mit der Option Benutzerseitig zugewiesene Identität zu verwenden.
Weitere Informationen finden Sie unter Bereitstellung ohne Standardauthentifizierung.
Was bewirkt die Option „Benutzerseitig zugewiesene Identität“ für GitHub Actions?
Wenn Sie Benutzerseitig zugewiesene Identität unter der Quelle GitHub Actions auswählen, konfiguriert App Service alle erforderlichen Ressourcen in Azure und in GitHub, um die empfohlene OpenID Connect-Authentifizierung mit GitHub Actions zu aktivieren.
Insbesondere führt App Service die folgenden Vorgänge aus:
- Erstellen von Verbundanmeldeinformationen zwischen einer benutzerseitig zugewiesenen verwalteten Identität in Azure und Ihrem ausgewählten Repository und Branch in GitHub
- Erstellen der Geheimnisse
AZURE_CLIENT_ID
,AZURE_TENANT_ID
undAZURE_SUBSCRIPTION_ID
aus den Verbundanmeldeinformationen in Ihrem ausgewählten GitHub-Repository - Zuweisen der Identität zu Ihrer App
In einem GitHub Actions-Workflow in Ihrem GitHub-Repository können Sie dann die Aktion Azure/login verwenden, um sich mit Ihrer App mithilfe von OpenID Connect zu authentifizieren. Beispiele finden Sie unter Hinzufügen der Workflowdatei zum GitHub-Repository.
Wenn Ihr Azure-Konto über die erforderlichen Berechtigungen verfügt, erstellt App Service eine benutzerseitig zugewiesene verwaltete Identität und konfiguriert sie für Sie. Diese Identität wird nicht auf der Seite Identitäten Ihrer App angezeigt. Wenn Ihr Azure-Konto nicht über die erforderlichen Berechtigungen verfügt, müssen Sie eine vorhandene Identität mit der erforderlichen Rolle auswählen.
Warum wird folgender Fehler angezeigt: „Sie verfügen nicht über ausreichende Berechtigungen für diese App, um rollenbasierten Zugriff auf eine verwaltete Identität zuzuweisen und Verbundanmeldeinformationen zu konfigurieren.“?
Die Meldung gibt an, dass Ihr Azure-Konto nicht über die erforderlichen Berechtigungen zum Erstellen einer benutzerseitig zugewiesenen verwalteten Identität für GitHub Actions verfügt. Die erforderlichen Berechtigungen (bezogen auf Ihre App) sind:
Microsoft.Authorization/roleAssignments/write
Microsoft.ManagedIdentity/userAssignedIdentities/write
Die Rollen Benutzerzugriffsadministrator und Besitzer verfügen bereits über diese Berechtigung, die Rolle Mitwirkender hingegen nicht. Falls Sie nicht über die erforderlichen Berechtigungen verfügen, können Sie mit Ihrem Azure-Administrator oder Ihrer Azure-Administratorin eine benutzerseitig zugewiesene verwaltete Identität mit der Rolle Websitemitwirkender erstellen. Im Bereitstellungscenter können Sie dann die Identität im Dropdownmenü GitHub>Identität auswählen.
Weitere Informationen zu den alternativen Schritten finden Sie unter Bereitstellen in App Service mithilfe von GitHub Actions.
Warum wird folgender Fehler angezeigt: „Diese Identität verfügt nicht über Schreibberechtigungen für diese App. Wählen Sie eine andere Identität aus, oder arbeiten Sie mit Ihrem Administrator oder Ihrer Administratorin zusammen, um Ihrer Identität die Rolle „Websitemitwirkender“ für diese App zu gewähren.“?
Die Meldung gibt an, dass die ausgewählte benutzerseitig zugewiesene verwaltete Identität nicht über die erforderliche Rolle verfügt, um OpenID Connect zwischen dem GitHub-Repository und der App Service-App zu aktivieren. Die Identität muss über eine der folgenden Rollen für die App verfügen: Besitzer, Mitwirkender, Websitemitwirkender. Die am wenigsten privilegierte Rolle, die die Identität benötigt, ist Websitemitwirkender.