Freigeben über


Tutorial: Bereitstellen eines .NET Aspire-Projekts mit den Azure Developer CLI- und GitHub-Aktionen

Mit dem Azure Developer CLI (azd) können Sie .NET Aspire Projekte mithilfe von GitHub Aktionen bereitstellen, indem Sie die erforderlichen Authentifizierungs- und Umgebungseinstellungen automatisch konfigurieren. Dieser Artikel führt Sie durch den Prozess des Erstellens und Bereitstellens eines .NET Aspire-Projekts auf Azure Container Apps unter Verwendung von azd und GitHub-Aktionen. Sie lernen die folgenden Konzepte kennen:

  • Erfahren Sie, wie azd Integration mit .NET Aspire Projekten und GitHub Aktionen funktioniert
  • Erstellen und Konfigurieren eines GitHub Repositorys für ein .NET Aspire Projekt mithilfe von azd
  • Hinzufügen einer GitHub Aktionen-Workflowdatei zu Ihrer .NET Aspire Lösung
  • Überwachen und Untersuchen von GitHub Aktionen-Workflow-Ausführungen und Azure Bereitstellungen

Voraussetzungen

Um mit .NET.NET Aspirezu arbeiten, benötigen Sie folgendes lokal installiert:

Weitere Informationen finden Sie unter .NET.NET Aspire Setup und Toolingsowie .NET.NET Aspire SDK.

Sie müssen auch die Azure Developer CLIlokal (Version 1.5.1 oder höher) installiert haben. Zu den allgemeinen Installationsoptionen gehören die folgenden:

winget install microsoft.azd

Erstellen einer .NET.NET Aspire Lösung

Als Ausgangspunkt geht in diesem Artikel davon aus, dass Sie eine .NET.NET Aspire Lösung aus der Vorlage .NET.NET Aspire Starter Application erstellt haben. Weitere Informationen finden Sie unter Schnellstart: Erstellen Sie Ihre erste .NET.NET Aspire-App.

Vorlage initialisieren

  1. Öffnen Sie ein neues Terminalfenster, und cd Sie in das AppHost- Projektverzeichnis Ihrer .NET.NET Aspire Lösung ein.

  2. Führen Sie den befehl azd init aus, um Ihr Projekt mit azdzu initialisieren, wodurch die lokale Verzeichnisstruktur überprüft und der App-Typ bestimmt wird.

    azd init
    

    Weitere Informationen zum Befehl azd init finden Sie unter azd init.

  3. Wählen Sie Code im aktuellen Verzeichnis nutzen aus, wenn azd Sie mit zwei App-Initialisierungsoptionen auffordert.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
    
  4. Nach dem Scannen des Verzeichnisses werden Sie von azd aufgefordert, zu bestätigen, dass es das richtige .NET.NET AspireAppHost- Projekt gefunden hat. Wählen Sie die Option "Bestätigen und fortfahren mit der Initialisierung meiner App" aus.

    Detected services:
    
      .NET (Aspire)
      Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj
    
    azd will generate the files necessary to host your app on Azure using Azure Container Apps.
    
    ? Select an option  [Use arrows to move, type to filter]
    > Confirm and continue initializing my app
      Cancel and exit
    
  5. Geben Sie einen Umgebungsnamen ein, der verwendet wird, um bereitgestellte Ressourcen in Azure zu benennen und verschiedene Umgebungen wie dev und prodzu verwalten.

    Generating files to run your app on Azure:
    
      (✓) Done: Generating ./azure.yaml
      (✓) Done: Generating ./next-steps.md
    
    SUCCESS: Your app is ready for the cloud!
    You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
    

azd generiert eine Reihe von Dateien und platziert sie in das Arbeitsverzeichnis. Diese Dateien sind:

  • azure.yaml: Beschreibt die Dienste der App, z. B. .NET Aspire AppHost Projekt, und ordnet diese den Azure Ressourcen zu.
  • ** .azure/config.json: Eine Konfigurationsdatei, die azd darüber informiert, welche die aktuell aktive Umgebung ist.
  • .azure/aspireazddev/.env: Enthält umgebungsspezifische Außerkraftsetzungen.

Hinzufügen der Workflowdatei GitHub Aktionen

Obwohl azd einige wichtige Vorlagendateien für Sie generiert hat, benötigt das Projekt weiterhin eine Actions-Workflow-Datei von GitHub, um Bereitstellungen mit CI/CD zu unterstützen.

  1. Erstellen Sie einen leeren .github Ordner im Stammverzeichnis Ihres Projekts. azd verwendet dieses Verzeichnis standardmäßig, um GitHub Aktionen-Workflowdateien zu ermitteln.

    Tipp

    Wenn Sie macOS-Nutzer sind und Schwierigkeiten haben, einen Ordner mit einer führenden .zu erstellen, können Sie das Terminal verwenden, um den Ordner zu erstellen. Öffnen Sie das Terminal und navigieren Sie zum Stammverzeichnis Ihres Projekts. Führen Sie den folgenden Befehl aus, um den Ordner zu erstellen:

    mkdir .github
    
  2. Innerhalb der neuen .github Ordner erstellen Sie einen anderen Ordner namens Workflows (Sie erhalten .github/workflows).

  3. Fügen Sie in den neuen Ordner azureeine neue -Aktionen-Workflowdatei hinzu. Die azd Startvorlage enthält eine Workflowdatei GitHub Aktionen, die Sie in Ihr Projekt kopieren können.

  4. Aktualisieren Sie den Beispiel-GitHub-Workflow, um einen Schritt für die Installation der .NET Aspire-Arbeitslast hinzuzufügen. Dadurch wird sichergestellt, dass die .NET Aspire Werkzeuge und Befehle für den Job verfügbar sind, der Ihre GitHub Aktionen ausführt. Die abgeschlossene Workflowdatei sollte mit dem folgenden übereinstimmen:

    on:
      workflow_dispatch:
      push:
        # Run when commits are pushed to mainline branch (main or master)
        # Set this to the mainline branch you are using
        branches:
          - main
    
    permissions:
      id-token: write
      contents: read
    
    jobs:
      build:
        runs-on: ubuntu-latest
        env:
          AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
          AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
          AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
          AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}
          AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
          AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
        steps:
          - name: Checkout
            uses: actions/checkout@v4
    
          - name: Install azd
            uses: Azure/setup-azd@v1.0.0
    
          - name: Install .NET Aspire workload
            run: dotnet workload install aspire
    
          - name: Log in with Azure (Federated Credentials)
            if: ${{ env.AZURE_CLIENT_ID != '' }}
            run: |
              azd auth login `
                --client-id "$Env:AZURE_CLIENT_ID" `
                --federated-credential-provider "github" `
                --tenant-id "$Env:AZURE_TENANT_ID"
            shell: pwsh
    
          - name: Log in with Azure (Client Credentials)
            if: ${{ env.AZURE_CREDENTIALS != '' }}
            run: |
              $info = $Env:AZURE_CREDENTIALS | ConvertFrom-Json -AsHashtable;
              Write-Host "::add-mask::$($info.clientSecret)"
    
              azd auth login `
                --client-id "$($info.clientId)" `
                --client-secret "$($info.clientSecret)" `
                --tenant-id "$($info.tenantId)"
            shell: pwsh
    
          - name: Provision Infrastructure
            run: azd provision --no-prompt
            # Required when 
            # env:
            #   AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}
    
          # Required when provisioning and deploying are defined in separate jobs.
          # - name: Refresh azd env (pulls latest infrastructure provision)
          #  run: azd env refresh
          #  env:
          #    AZURE_LOCATION: ${{ env.AZURE_LOCATION }}
    
          - name: Deploy Application
            run: azd deploy --no-prompt
    

Darüber hinaus stellen Sie möglicherweise fest, dass die Bereitstellungs- und Bereitstellungsschritte in einem einzigen Auftrag kombiniert werden. Wenn Sie diese Schritte lieber in verschiedene Aufträge unterteilen möchten, können Sie dazu zwei separate Aufträge in der Workflowdatei erstellen. Der Bereitstellungsauftrag sollte zuerst ausgeführt werden, gefolgt vom Bereitstellungsauftrag. Der Bereitstellungsauftrag sollte den AZD_INITIAL_ENVIRONMENT_CONFIG geheimen Schlüssel enthalten, um sicherzustellen, dass der Bereitstellungsauftrag Zugriff auf die Umgebungskonfiguration hat. Sie müssen den Kommentar zum Schritt azd env refresh im Deploy-Auftrag aufheben, um sicherzustellen, dass er Zugriff auf die neueste Infrastructure-Provision hat.

Erstellen des GitHub Repositorys und der Pipeline

Mit dem Azure Developer CLI können Sie CI/CD-Pipelines mit den richtigen Konfigurationen und Berechtigungen automatisch erstellen, um Ressourcen auf Azurebereitzustellen und zu veröffentlichen. azd kann auch ein GitHub-Repository für Ihre App erstellen, falls es noch nicht existiert.

  1. Führen Sie den Befehl azd pipeline config aus, um Die Bereitstellungspipeline zu konfigurieren und sicher mit Azurezu verbinden:

    azd pipeline config
    
  2. Wählen Sie das Abonnement aus, in dem die App-Ressourcen bereitgestellt und eingesetzt werden sollen.

  3. Wählen Sie den Azure Speicherort aus, der für die Ressourcen verwendet werden soll.

  4. Wenn Sie aufgefordert werden, ein neues Git Repository im Verzeichnis zu erstellen, geben Sie und ein, und drücken Sie EINGABETASTE.

    Anmerkung

    Zum Erstellen eines GitHub Repositorys mussten Sie bei GitHubangemeldet sein. Es gibt einige Auswahlmöglichkeiten, die je nach Ihren Vorlieben variieren. Nach der Anmeldung werden Sie aufgefordert, ein neues Repository im aktuellen Verzeichnis zu erstellen.

  5. Wählen Sie , um ein neues privates GitHub Repository zu erstellen und die git Remote zu konfigurieren.

  6. Geben Sie einen Namen Ihrer Wahl für das neue GitHub Repository ein, oder drücken Sie die EINGABETASTE, um den Standardnamen zu verwenden. azd erstellt ein neues Repository in GitHub und konfiguriert es mit den erforderlichen Geheimschlüsseln, die für die Authentifizierung bei Azureerforderlich sind.

    Ein Screenshot mit den Pipelinekonfigurationsschritten.

  7. Geben Sie und ein, um fortzufahren, wenn azd Sie auffordert, einen Commit auszuführen und Ihre lokalen Änderungen zu übertragen, um die konfigurierte Pipeline zu starten.

Erkunden Sie den GitHub-Workflow und die Bereitstellung von Aktionen.

  1. Navigieren Sie mittels des Links, den GitHubausgibt, zu Ihrem neuen azd-Repository.

  2. Wählen Sie die Registerkarte Aktionen aus, um die Repository-Workflows anzuzeigen. Der neue Workflow sollte entweder ausgeführt oder bereits abgeschlossen sein. Wählen Sie den Workflow aus, um die Auftragsschritte und Details in den Protokollen der Ausführung anzuzeigen. Sie können z. B. Schritte wie installieren .NET.NET Aspire Workload oder Anwendung bereitstellen erweitern, um die Details der abgeschlossenen Aktion anzuzeigen.

    Screenshot mit den GitHub Schritte des Aktionsworkflows.

  3. Wählen Sie Anwendungsbereitstellung aus, um die Protokolle für diesen Schritt zu erweitern. Es sollten zwei Endpunkt-URLs für apiservice und webfrontendausgegeben werden. Wählen Sie einen dieser Links aus, um sie auf einer anderen Browserregisterkarte zu öffnen und die bereitgestellte Anwendung zu erkunden.

    Screenshot mit den bereitgestellten App-Links.

Glückwunsch! Sie haben erfolgreich ein .NET Aspire Projekt mithilfe der Azure Developer CLI und GitHub Aktionen eingesetzt.

Konfigurieren der Workflow-Datei

Obwohl azd einige wichtige Vorlagendateien für Sie generiert hat, benötigt das Projekt weiterhin eine Azure Pipelines-Workflowdatei, um Bereitstellung und Implementierung mit CI/CD zu unterstützen.

  1. Erstellen Sie einen leeren .azdo Ordner im Stammverzeichnis des Projekts. azd verwendet dieses Verzeichnis standardmäßig, um Azure Pipelines-Workflowdateien zu ermitteln.

  2. Erstellen Sie im neuen .azdo Ordner einen weiteren Ordner namens Pipelines (Das Ergebnis ist .azdo/pipelines).

  3. Fügen Sie eine neue Azure Pipelines-Workflowdatei in den neuen Ordner mit dem Namen azure-dev.ymlhinzu. Die azd Startvorlage stellt eine Beispiel-Pipeline-Workflowdatei Azure bereit, die Sie in Ihr Projekt kopieren können.

  4. Aktualisieren Sie den Beispiel-Workflow Azure Pipelines, um einen Schritt zum Installieren der .NET Aspire Workload einzuschließen. Die abgeschlossene Workflowdatei sollte mit dem folgenden übereinstimmen:

trigger:
  - main
  - master

pool:
  vmImage: ubuntu-latest

steps:

  - task: Bash@3
    displayName: Install azd
    inputs:
      targetType: 'inline'
      script: |
        curl -fsSL https://aka.ms/install-azd.sh | bash

  # azd delegate auth to az to use service connection with AzureCLI@2
  - pwsh: |
      azd config set auth.useAzCliAuth "true"
    displayName: Configure `azd` to Use AZ CLI Authentication.

  - task: Bash@3
    displayName: Install .NET Aspire workload
    inputs:
      targetType: 'inline'
      script: |
        dotnet workload install aspire

  - task: AzureCLI@2
    displayName: Provision Infrastructure
    inputs:
      azureSubscription: azconnection
      scriptType: bash
      scriptLocation: inlineScript
      inlineScript: |
        azd provision --no-prompt
    env:
      AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
      AZURE_ENV_NAME: $(AZURE_ENV_NAME)
      AZURE_LOCATION: $(AZURE_LOCATION)

  - task: AzureCLI@2
    displayName: Deploy Application
    inputs:
      azureSubscription: azconnection
      scriptType: bash
      scriptLocation: inlineScript
      inlineScript: |
        azd deploy --no-prompt
    env:
      AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
      AZURE_ENV_NAME: $(AZURE_ENV_NAME)
      AZURE_LOCATION: $(AZURE_LOCATION)

Erstellen Sie das Azure DevOps-Repository und die Pipeline

Wichtig

Wie in den Voraussetzungen erwähnt, müssen Sie eine Azure DevOps-Organisation erstellen bzw. eine vorhandene Organisation auswählen, um die nachfolgenden Schritte auszuführen. Sie müssen auch einen persönlichen Zugriffstoken (PAT) mit den in den Voraussetzungen aufgeführten Berechtigungen erstellen.

Mit dem Azure Developer CLI können Sie Pipelines automatisch mit den richtigen Konfigurationen und Berechtigungen erstellen, um Ressourcen für Azurebereitzustellen und zu implementieren. azd kann auch ein Azure Pipelines-Repository für Ihre App erstellen, sofern es noch nicht vorhanden ist.

  1. Führen Sie den Befehl azd pipeline config aus, um die Bereitstellungspipeline zu konfigurieren und sie sicher mit Azurezu verbinden. Fügen Sie die Option --provider azdo hinzu, um Azure Pipelines anstelle der Standardkonfiguration GitHub Aktionen zu verwenden.

    azd pipeline config --provider azdo
    
  2. Wählen Sie das Abonnement aus, in dem die App-Ressourcen bereitgestellt und eingesetzt werden sollen.

  3. Wählen Sie den Azure Speicherort aus, der für die Ressourcen verwendet werden soll.

  4. Fügen Sie das zuvor erstellte persönliche Zugriffstoken ein.

  5. Geben Sie den namen der Azure DevOps-Organisation ein, den Sie erstellt oder ausgewählt haben.

  6. Wenn Sie aufgefordert werden, ein neues Repository im aktuellen Verzeichnis zu erstellen, geben Sie y ein und drücken Sie die Eingabetaste.

  7. Wenn Sie aufgefordert werden, die git Remote zu konfigurieren, wählen Sie Neues Azure DevOps-Projekt erstellenaus.

  8. Geben Sie einen eindeutigen Namen Ihrer Wahl für das neue Repository ein, z. B. aspireazd. azd erstellt ein neues Repository in Azure Repos und konfiguriert es mit den erforderlichen geheimen Schlüsseln, die für die Authentifizierung bei Azureerforderlich sind.

    Ein Screenshot mit den Pipelinekonfigurationsschritten.

  9. Geben Sie und ein, um fortzufahren, wenn azd Sie auffordert, einen Commit auszuführen und Ihre lokalen Änderungen zu übertragen, um die konfigurierte Pipeline zu starten.

Erkunden Sie die Pipeline und die bereitgestellte App

  1. Zur neuen Azure-Pipeline navigieren Sie über den Statuslink, der von azdausgegeben wird.

    Ein Screenshot, der die erfolgreiche Ausführung von Azure Pipelines zeigt.

  2. Wählen Sie die abgeschlossene Pipelineausführung aus, um die Zusammenfassung anzuzeigen.

    Ein Screenshot mit der Zusammenfassungsansicht der ausgeführten Azure Pipelines.

  3. Wählen Sie den Joblink am unteren Rand der Ansicht aus, um zu den Jobdetails zu gelangen.

    Ein Screenshot mit der detaillierten Ansicht des Durchlaufs der Azure Pipelines.

  4. Auf der Seite "Auftragsdetails" wird der Status aller einzelnen Phasen angezeigt. Wählen Sie Bereitstellungsinfrastruktur aus, um die Protokolle für diese Phase anzuzeigen, die alle Bereitstellungsschritte enthalten, die von azdabgeschlossen wurden. Notieren Sie sich am Ende der Protokolle die endgültige Statusmeldung und den Link zur bereitgestellten Azure-Ressourcengruppe.

  5. Wählen Sie den Link unten in den Bereitstellungsausgabeprotokollen aus, um zur neuen Azure Ressourcengruppe zu navigieren.

    Ein Screenshot mit den bereitgestellten Azure Ressourcen.

    Anmerkung

    Sie können auch direkt zu Ihrer neuen Ressourcengruppe navigieren, indem Sie im Azure Portal danach suchen. Ihr Ressourcengruppenname ist der Umgebungsname, den Sie azd mit dem Präfix "rg-" angegeben haben.

  6. Wählen Sie die webfrontend Container-App aus, die den öffentlich zugänglichen Teil Ihrer Website hosten soll.

  7. Wählen Sie auf der webfrontend Detailseite den Link Anwendungs-URL aus, um Ihre Website im Browser zu öffnen.

Wichtig

Wenn beim Anzeigen Ihrer Website im Browser ein 403 Forbidden-Fehler auftritt, stellen Sie sicher, dass die Ingress-Einstellungen ordnungsgemäß konfiguriert sind. Navigieren Sie auf der webfrontend App-Seite im Azure Portal zu Ingress auf der linken Navigationsleiste. Stellen Sie sicher, dass Eingangsverkehr auf Annehmen von Datenverkehr von überall festgelegt ist und speichern Sie Ihre Änderungen.

Glückwunsch! Sie haben erfolgreich ein .NET Aspire-Projekt mithilfe der Azure Developer CLI- und Azure-Pipeline bereitgestellt.

Bereinigen von Ressourcen

Führen Sie den folgenden Azure CLI-Befehl aus, um die Ressourcengruppe zu löschen, wenn Sie die von Ihnen erstellten Azure Ressourcen nicht mehr benötigen. Durch das Löschen der Ressourcengruppe werden auch die darin enthaltenen Ressourcen gelöscht.

az group delete --name <your-resource-group-name>

Weitere Informationen finden Sie unter Ressourcen bereinigen in Azure.