Bereitstellen in App Service mithilfe von GitHub Actions

Verwenden Sie GitHub Actions zum Automatisieren Ihres Workflows und zum Bereitstellen im Azure App Service aus GitHub.

Voraussetzungen

Einrichten der Bereitstellung von GitHub-Aktionen beim Erstellen der App

Die Bereitstellung von GitHub-Aktionen ist in den standardmäßigen App-Erstellungsassistenten integriert. Sie müssen lediglich Continuous Deployment (CD) auf Aktivieren der Registerkarte „Bereitstellung“ festlegen und die gewünschte Organisation, das Repository und die gewünschte Verzweigung konfigurieren.

A screenshot showing how to enable GitHub Actions deployment in the App Service create wizard.

Wenn Sie die kontinuierliche Bereitstellung aktivieren, wählt der Assistent für die App-Erstellung automatisch die Authentifizierungsmethode basierend auf der Auswahl der Standardauthentifizierung aus und konfiguriert Ihre App und Ihr GitHub-Repository entsprechend:

Auswahl der Standardauthentifizierung Authentifizierungsmethode
Disable Vom Benutzer zugewiesene Identität (OpenID Connect)
Aktivieren Standardauthentifizierung

Hinweis

Wenn beim Erstellen Ihrer App eine Fehlermeldung angezeigt wird, die besagt, dass Ihr Azure-Konto nicht über bestimmte Berechtigungen verfügt, hat es möglicherweise nicht die erforderlichen Berechtigungen zum Erstellen und Konfigurieren der vom Benutzer zugewiesenen Identität. Eine Alternative finden Sie unter Einrichten der Bereitstellung von GitHub Actions aus dem Deployment Center.

Einrichten der Bereitstellung von GitHub Actions über das Deployment Center

Bei einer vorhandenen Anwendung können Sie mit GitHub Actions schnell loslegen, indem Sie das App Service Deployment Center nutzen. Diese schlüsselfertige Methode generiert automatisch eine GitHub Actions Workflow-Datei auf der Grundlage Ihres Anwendungsstapels und überträgt sie in Ihr GitHub-Repository.

Mit dem Deployment Center können Sie auch die sicherere OpenID Connect-Authentifizierung mit der Option für die vom Benutzer zugewiesene Identität problemlos konfigurieren.

Wenn Ihr Azure-Konto über die erforderlichen Berechtigungen verfügt, können Sie eine benutzerseitig zugewiesene Identität erstellen. Andernfalls können Sie eine vorhandene, benutzerseitig zugewiesene verwaltete Identität im Dropdown Identität auswählen. Sie können mit Ihrem Azure-Administrator eine benutzerseitig zugewiesene verwaltete Identität mit der Rolle Website-Mitwirkender erstellen.

Weitere Informationen finden Sie unter Continuous Deployment in Azure App Service.

Manuelles Einrichten eines GitHub-Actions-Workflows

Sie können einen Workflow auch ohne das Deployment Center bereitstellen.

  1. Generieren von Anmeldeinformationen für die Bereitstellung
  2. Konfigurieren des GitHub-Geheimnisses
  3. Hinzufügen der Workflowdatei zum GitHub-Repository

1. Generieren von Anmeldeinformationen für die Bereitstellung

Die empfohlene Methode zum Authentifizieren mit Azure App Services für GitHub Actions ist eine benutzerdefinierte verwaltete Identität. Am einfachsten ist es, stattdessen die GitHub Actions-Bereitstellung direkt im Portal zu konfigurieren und Benutzerseitig zugewiesene verwaltete Identität auszuwählen.

Hinweis

Die Authentifizierung mit einer benutzerseitig zugewiesenen verwalteten Identität befindet sich derzeit in der Vorschauphase.

Alternativ können Sie sich mit einem Dienstprinzipal, mit OpenID Connect oder mit einem Veröffentlichungsprofil authentifizieren.

Hinweis

Für das Veröffentlichungsprofil muss Standardauthentifizierung aktiviert werden.

Ein Veröffentlichungsprofil stellt Anmeldeinformationen auf App-Ebene dar. Richten Sie Ihr Veröffentlichungsprofil als GitHub-Geheimnis ein.

  1. Wechseln Sie im Azure-Portal zu Ihrem App Service.

  2. Wählen Sie auf der Seite Übersicht die Option Veröffentlichungsprofil abrufen.

  3. Speichern Sie die heruntergeladene Datei. Zum Erstellen eines GitHub-Geheimnisses verwenden Sie den Inhalt der Datei.

Hinweis

Ab Oktober 2020 muss für Linux-Web-Apps die App-Einstellung WEBSITE_WEBDEPLOY_USE_SCM auf true festgelegt werden, bevor das Veröffentlichungsprofil heruntergeladen wird. Diese Anforderung wird künftig entfallen.

2. Konfigurieren des GitHub-Geheimnisses

Suchen Sie auf GitHub nach Ihrem Repository. Wählen Sie Einstellungen > Sicherheit > Geheimnisse und Variablen > Aktionen > Neues Repositorygeheimnis aus.

Um Anmeldeinformationen auf App-Ebene zu verwenden, fügen Sie den Inhalt der heruntergeladenen Veröffentlichungsprofildatei in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_WEBAPP_PUBLISH_PROFILE.

Wenn Sie die GitHub-Workflowdatei später konfigurieren, verwenden Sie die AZURE_WEBAPP_PUBLISH_PROFILE in der Aktion Azure Webanwendung bereitstellen. Beispiel:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

3. Hinzufügen der Workflowdatei zum GitHub-Repository

Ein Workflow wird durch eine YAML-Datei (.yml) in dem /.github/workflows/-Pfad in Ihrem GitHub-Repository definiert. Diese Definition enthält die verschiedenen Schritte und Parameter, die den Workflow bilden.

Die Workflowdatei sollte mindestens die folgenden einzelnen Schritte enthalten:

  1. Authentifizieren Sie sich bei App Service mit dem von Ihnen erstellten GitHub-Geheimschlüssel.
  2. Erstellen der Web-App.
  3. Bereitstellen der Web-App.

Um Ihren Code in einer App Service-Anwendung bereitzustellen, verwenden Sie die Aktion azure/webapps-deploy@v3. Die Aktion erfordert den Namen Ihrer Web-App in app-name und, je nach Sprachstapel, den Pfad eines *.zip, *.war, *.jar oder Ordners, der in package bereitgestellt werden soll. Eine vollständige Liste der möglichen Eingaben für die azure/webapps-deploy@v3-Aktion finden Sie in der Definition action.yml.

Die folgenden Beispiele zeigen den Teil des Workflows, in dem die Web-App in den verschiedenen unterstützten Sprachen erstellt wird.

Die publish-profile-Eingabe sollte auf den AZURE_WEBAPP_PUBLISH_PROFILEzuvor erstellten GitHub-Geheimschlüssel verweisen.

name: .NET Core CI

on: [push]

env:
  AZURE_WEBAPP_NAME: my-app-name    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v3
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE  }} # Define secret variable in repository settings as per action documentation
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'

Nächste Schritte

Sehen Sie sich die Referenzen zu Azure GitHub Actions und Workflows an: