Verwenden der Bereitstellungsaktion von Azure-Web-Apps mit Azure Stack Hub

Sie können GitHub Actions einrichten, um eine Web-App auf Ihrer Azure Stack Hub-Instanz bereitzustellen. Dies ermöglicht es Ihnen, Continuous Integration und Continuous Deployment für Ihre App einzurichten. Dieser Artikel hilft Ihnen bei der Einrichtung der automatisierten Bereitstellung mithilfe von GitHub Actions und Azure Stack Hub. Erstellen Sie eine Web-App, und verwenden Sie das Veröffentlichungsprofil, um die Web-App zum Hosten Ihrer App zu erstellen.

GitHub Actions sind Workflows, die aus Aktionen bestehen, die die Automatisierung direkt in Ihrem Coderepository ermöglichen. Sie können die Workflows mit Ereignissen in Ihrem GitHub-Entwicklungsprozess auslösen. Sie können gängige DevOps-Automatisierungsaufgaben festlegen, wie z. B. Tests, Bereitstellung und Continuous Integration.

Dieser Beispielworkflow enthält Anweisungen für Folgendes:

  • Erstellen und Überprüfen Ihres Dienstprinzipals
  • Erstellen des Veröffentlichungsprofils Ihrer Web-App
  • Hinzufügen eines laufzeitspezifischen Workflows
  • Hinzufügen eines übereinstimmenden Workflows mit der Web-App-Bereitstellung

Erstellen eines Dienstprinzipals

Ein Dienstprinzipal kann die rollenbasierte Zugriffssteuerung verwenden, um eine Verbindung mit Ressourcen herzustellen und mit ihnen zu interagieren. Sie benötigen für die Verwendung mit Ihren GitHub Actions-Instanzen einen Dienstprinzipal mit Zugriff für Mitwirkende und den in diesen Anweisungen angegebenen Attributen.

Wichtig

Wenn Sie ein Entwickler oder Benutzer von Azure Stack Hub sind, haben Sie nicht die Berechtigung zum Erstellen eines Dienstprinzipals. Sie müssen entweder über Cloudbetreiberberechtigungen verfügen oder dieses Prinzip von Ihrem Cloudbetreiber anfordern, indem Sie die Anweisungen in diesem Abschnitt befolgen.

Die folgenden Codeausschnitte wurden für einen Windows-Computer unter Verwendung der PowerShell-Eingabeaufforderung mit Azure CLI geschrieben. Wenn Sie die CLI auf einem Linux-Computer mit der Bash verwenden, entfernen Sie entweder die Zeilenerweiterung, oder ersetzen Sie sie durch einen \.

  1. Bereiten Sie die Werte der folgenden Parameter vor, die zum Erstellen des Dienstprinzipals verwendet werden:

    Parameter Beispiel BESCHREIBUNG
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Der Ressourcenverwaltungsendpunkt.
    suffix-storage-endpoint „orlando.azurestack.corp.microsoft.com“ Das Endpunktsuffix für Speicherkonten.
    suffix-keyvault-dns „.vault.orlando.azurestack.corp.microsoft.com“ Das DNS-Suffix des Key Vault-Diensts.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Active Directory-Ressourcen-ID
    endpoint-sql-management https://notsupported Der SQL Server-Verwaltungsendpunkt. Auf https://notsupported
    Profil 2020-09-01-hybrid Das Profil, das für diese Cloud verwendet werden soll.
  2. Öffnen Sie das Befehlszeilentool, z B. Windows PowerShell oder Bash. Melden Sie sich mit dem folgenden Befehl bei der Azure CLI an:

    az login
    
  3. Verwenden Sie den Befehl register für eine neue Umgebung oder den Befehl update, wenn Sie eine vorhandene Umgebung verwenden. Verwenden Sie den folgenden Befehl.

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2020-09-01-hybrid
    
  4. Rufen Sie die Abonnement-ID und die Ressourcengruppe ab, die Sie für den Dienstprinzipal verwenden möchten.

  5. Erstellen Sie den Dienstprinzipal mit dem folgenden Befehl mit der Abonnement-ID und der Ressourcengruppe:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Kopieren Sie das resultierende JSON-Objekt. Sie verwenden das JSON-Objekt, um Ihr Geheimnis in Ihrem GitHub-Repository zu erstellen, das Ihre Aktion enthält. Das JSON-Objekt sollte die folgenden Attribute aufweisen:

    {
      "clientId": <Application ID for the service principal>,
      "clientSecret": <Client secret for the service principal>,
      "subscriptionId": <Subscription ID for the service principal>,
      "tenantId": <Tenant ID for the service principal>,
      "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/",
      "resourceManagerEndpointUrl": "https://management.<FQDN>",
      "activeDirectoryGraphResourceId": "https://graph.windows.net/",
      "sqlManagementEndpointUrl": "https://notsupported",
      "galleryEndpointUrl": "https://providers.<FQDN>:30016/",
      "managementEndpointUrl": "https://management.<FQDN>"
    }
    

Erstellen des Veröffentlichungsprofils der Web-App

Öffnen Sie das Blatt „Web-App erstellen“.

  1. Melden Sie sich beim Azure Stack Hub-Portal an.
  2. Wählen Sie Ressource erstellen>Web + Mobil>Web-Apps aus. Create a web app in Azure Stack Hub

So erstellen Sie Ihre Web-App

  1. Wählen Sie Ihr Abonnement aus.
  2. Erstellen Sie eine Ressourcengruppe, oder wählen Sie eine Ressourcengruppe aus.
  3. Geben Sie den Namen Ihrer App ein. Der Name der App wird in der URL für Ihre App angezeigt, zum Beispiel yourappname.appservice.<region>.<FQDN>.
  4. Wählen Sie den Runtimestapel für Ihre App aus Die Runtime muss mit dem Workflow identisch sein, den Sie für das Veröffentlichungsprofil verwenden.
  5. Wählen Sie das Betriebssystem aus, das Ihre Runtime und Ihre App hosten soll.
  6. Wählen Sie die Region für Ihre Azure Stack Hub-Instanz aus, oder geben Sie sie ein.
  7. Wählen Sie den Plan basierend auf Ihrer Azure Stack Hub-Instanz, der Region und des Betriebssystems der App aus.
  8. Klicken Sie auf Überprüfen + erstellen.
  9. Überprüfen Sie Ihre Web-App. Klicken Sie auf Erstellen. Review web app in Azure Stack Hub
  10. Wählen Sie Zu Ressource wechseln aus. Get publish profile in Azure Stack Hub
  11. Klicken Sie auf Veröffentlichungsprofil abrufen. Ihr Veröffentlichungsprofil wird heruntergeladen und hat den Namen <yourappname>.PublishSettings. Die Datei enthält eine XML-Datei mit den Zielwerten Ihrer Web-App.
  12. Speichern Sie Ihr Veröffentlichungsprofil, damit Sie darauf zugreifen können, wenn Sie die Geheimnisse für Ihr Repository erstellen.

Hinzufügen der Geheimnisse zum Repository

Sie können GitHub-Geheimnisse verwenden, um vertrauliche Informationen für die Verwendung in Ihren Aktionen zu verschlüsseln. Sie erstellen ein Geheimnis, das Ihren Dienstprinzipal enthält, und ein weiteres Geheimnis, welches das Veröffentlichungsprofil Ihrer Web-App enthält. Die Aktion verwendet diese, um sich bei Ihrer Azure Stack Hub-Instanz zu anmelden und Ihre App auf dem Web-App-Ziel zu erstellen.

  1. Öffnen oder erstellen Sie ein GitHub-Repository. Wenn Sie Anweisungen zum Erstellen eines Repositorys in GitHub benötigen, finden Sie Anweisungen in der GitHub-Dokumentation.
  2. Klicken Sie auf Einstellungen.
  3. Wählen Sie Secrets (Geheimnisse) aus.
  4. Wählen Sie New repository secret (Neues Repositorygeheimnis) aus. Add your GitHub Actions secret
  5. Geben Sie Ihrem Geheimnis den Namen AZURE_CREDENTIALS.
  6. Fügen Sie das JSON-Objekt ein, das Ihren Dienstprinzipal darstellt.
  7. Klicken Sie auf Add secret (Geheimnis hinzufügen).
  8. Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.
  9. Geben Sie Ihrem Geheimnis den Namen AZURE_WEBAPP_PUBLISH_PROFILE.
  10. Öffnen Sie Ihre <yourappname>.PublishSettings in einem Text-Editor, und kopieren Sie den XML-Code in das Repositorygeheimnis.
  11. Klicken Sie auf Add secret (Geheimnis hinzufügen).

Hinzufügen eines Repositoryworkflows

  1. Wählen Sie eine Vorlage aus der Tabelle für Ihre Web-App-Runtime aus.

    Laufzeit Vorlage
    DotNet dotnet.yml
    NodeJS node.yml
    Java java_jar.yml
    Java java_war.yml
    Python python.yml
    PHP php.yml
    Docker docker.yml
  2. Platzieren Sie die Vorlage für das Workflowverzeichnis der GitHub-Aktion in Ihrem Projektrepository: .github/workflows/<runtime.yml> Ihr Workflowverzeichnis enthält zwei Workflows.

Hinzufügen der Bereitstellungsaktion für die Web-App

Erstellen Sie einen zweiten Workflow mithilfe der YAML-Datei in diesem Abschnitt. In diesem Beispiel stellen Sie eine Python-Web-App bereit. Sie müssen eine Setupaktion basierend auf Ihren Workflow auswählen. Sie finden nach den zum Erstellen der Aktion verwendeten Schritte die Verweise auf die Einrichtung von Aktionen für verschiedene Runtimes in der Tabelle, Setupaktionen für verschiedene Runtimes.

Beispiel für einen GitHub-Aktionsworkflow

  1. Öffnen Sie Ihr GitHub-Repository. Wenn Ihre Ressourcen für die Web-App-Anwendung noch nicht hinzugefügt haben, tun Sie dies jetzt. In diesem Beispiel wird das Beispiel Python Flask Hello World verwendet, und die Python-Dateien .gitignore, app.py und requirements.txt wurden hinzugefügt.

    Exmaple of the repo using Python Flask with Azure Stack Hub

  2. Wählen Sie Actions aus.

  3. Klicken Sie auf New workflow (Neuer Workflow).

    • Wenn dies Ihr erster Workflow ist, wählen Sie set up a workflow yourself (selbst einen Workflow einrichten) unter Choose a workflow template (Workflowvorlage auswählen) aus.
    • Wenn Sie über vorhandene Workflows verfügen, wählen Sie New workflow>Set up a workflow yourself (Neuer Workflow > Selbst einen Workflow einrichten) aus.
  4. Benennen Sie die Datei im Pfad workflow.yml.

  5. Kopieren Sie die yml-Datei des Workflows, und fügen Sie sie ein.

    # .github/workflows/worfklow.yml
    on: push
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        # checkout the repo
        - name: 'Checkout Github Action' 
          uses: actions/checkout@main
    
        - name: Setup Python 3.6
          uses: actions/setup-node@v1
          with:
            python-version: '3.6'
        - name: 'create a virtual environment and install dependencies'
          run: |
            python3 -m venv .venv
            source .venv/bin/activate
            pip install -r requirements.txt
    
        - name: 'Run Azure webapp deploy action using publish profile credentials'
          uses: azure/webapps-deploy@v2
          with:
            app-name: <YOURAPPNAME>
            publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
    
  6. Im „workflow.yaml“-Update <YOURAPPNAME> mit Ihrem App-Namen.

  7. Klicken Sie auf Start commit (Commit starten).

  8. Fügen Sie den Titel des Commits und optionale Details hinzu, und wählen Sie dann Commit new file (Neue Datei committen) aus.

Setupaktionen für verschiedene Runtimes

Verwenden Sie zum Erstellen von App-Code in einer bestimmten sprachbasierten Umgebung die folgenden Setupaktionen:

Laufzeit Setupaktionen
DotNet Setup DotNet
NodeJS Setup Node
Java Setup Java
Python Setup Python
Docker docker-login

Sobald die Anmeldeaktion abgeschlossen ist, können die nächsten Aktionen im Workflow Aufgaben wie das Erstellen, Kennzeichnen und Pushen von Containern durchführen. Weitere Informationen finden Sie in der Dokumentation zur Azure-Web-App-Aktion.

Auslösen der Bereitstellung

Überprüfen Sie nach der Ausführung, ob die Aktion erfolgreich ausgeführt wurde.

  1. Öffnen Sie Ihr GitHub-Repository. Sie können den Workflow durch Pushübertragung in das Repository auslösen.
  2. Wählen Sie Actions aus.
  3. Wählen Sie den Namen des Commits unter All workflows (Alle Workflows) aus. Beide Workflows haben ihren Status protokolliert. Review the status of your GitHub action
  4. Wählen Sie den Namen des Auftrags für die Bereitstellung .github/workflows/workflow.yml aus.
  5. Klappen Sie die Abschnitte auf, um die Rückgabewerte für Ihre Workflowaktionen zu überprüfen. Suchen Sie nach der URL für Ihre bereitgestellte Web-App. Find your Azure Stack Hub web app URL
  6. Öffnen Sie einen Webbrowser, und laden Sie die URL.

Nächste Schritte