Dela via


Självstudie: Distribuera ett .NET Aspire projekt med hjälp av Azure Developer CLI- och GitHub-åtgärderna

Med Azure Developer CLI (azd) kan du distribuera .NET Aspire projekt med hjälp av GitHub Actions genom att automatiskt konfigurera nödvändiga autentiserings- och miljöinställningar. Den här artikeln beskriver hur du skapar och distribuerar ett .NET Aspire projekt på Azure Container Apps med hjälp av azd och GitHub Actions. Du lär dig följande begrepp:

  • Utforska hur azd integrering fungerar med .NET Aspire projekt och GitHub Actions
  • Skapa och konfigurera en GitHub lagringsplats för ett .NET Aspire projekt med hjälp av azd
  • Lägga till en GitHub Actions-arbetsflödesfil i din .NET Aspire-lösning
  • Övervaka och utforska GitHub Actions-arbetsflöden och Azure utplaceringar

Förutsättningar

Om du vill arbeta med .NET.NET Aspirebehöver du följande installerat lokalt:

Mer information finns i .NET.NET Aspire installation och verktygoch .NET.NET Aspire SDK.

  • Skapa en Azure DevOps-organisation eller välj en befintlig organisation
  • Skapa en Azure DevOps Personlig åtkomsttoken (PAT) och spara den för senare användning. Konfigurera token med följande behörigheter:
    • Agentgrupper (läsa, hantera)
    • Skapa (läsa och köra)
    • Kod (fullständig)
    • Projekt och team (läsa, skriva och hantera)
    • Frisläpp (läsa, skriva, exekvera och hantera)
    • Tjänstanslutningar (läsa, fråga och hantera)

Du måste också ha Azure Developer CLIinstallerat lokalt (version 1.5.1 eller senare). Vanliga installationsalternativ är följande:

winget install microsoft.azd

Skapa en .NET.NET Aspire lösning

Som utgångspunkt förutsätter den här artikeln att du har skapat en .NET.NET Aspire lösning från mallen .NET.NET Aspire Starter Application. Mer information finns i Snabbstart: Skapa din första .NET.NET Aspire app.

Initiera mallen

  1. Öppna ett nytt terminalfönster och cd i projektkatalogen AppHost för din .NET.NET Aspire lösning.

  2. Kör kommandot azd init för att initiera projektet med azd, som kommer att granska den lokala katalogstrukturen och fastställa typen av app.

    azd init
    

    Mer information om kommandot azd init finns i azd init.

  3. Välj Använd kod i den aktuella katalogen när azd uppmanar dig med två alternativ för appinitiering.

    ? 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. När du har genomsökt katalogen uppmanar azd dig att bekräfta att den hittade rätt .NET.NET AspireAppHost- projekt. Välj alternativet Bekräfta och fortsätt initiera min app.

    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. Ange ett miljönamn som används för att namnge etablerade resurser i Azure och hantera olika miljöer, till exempel dev och prod.

    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 genererar ett antal filer och placerar dem i arbetskatalogen. Dessa filer är:

  • azure.yaml: Beskriver tjänsterna i appen, till exempel .NET Aspire AppHost-projekt, och mappar dem till Azure resurser.
  • .azure/config.json: Konfigurationsfil som informerar azd vad den aktuella aktiva miljön är.
  • .azure/aspireazddev/.env: Innehåller miljöspecifika åsidosättningar.

Lägg till arbetsflödesfilen GitHub Actions

Även om azd genererat några viktiga mallfiler åt dig, behöver projektet fortfarande en GitHub Actions-arbetsflödesfil för att stödja etablering och distributioner med HJÄLP av CI/CD.

  1. Skapa en tom .github--mapp i roten för projektet. azd använder den här katalogen som standard för att identifiera arbetsflödesfiler för GitHub Actions.

    Tips

    Om du använder macOS-användare och du har svårt att skapa en mapp med en inledande .kan du använda terminalen för att skapa mappen. Öppna terminalen och gå till roten för projektet. Kör följande kommando för att skapa mappen:

    mkdir .github
    
  2. I den nya mappen .github skapar du en annan mapp med namnet arbetsflöden (du får .github/workflows).

  3. Lägg till en ny GitHub Actions-arbetsflödesfil i den nya mappen med namnet azure-dev.yml. Mallen azd starter innehåller en Exempel GitHub Actions-arbetsflödesfil som du kan kopiera till projektet.

  4. Uppdatera exempelarbetsflödet GitHub Actions så att det innehåller ett steg för att installera .NET Aspire-arbetsbelastningen. Detta säkerställer att .NET Aspire verktyg och kommandon är tillgängliga för jobbet som kör dina GitHub-åtgärder. Den slutförda arbetsflödesfilen bör matcha följande:

    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@v2
    
          - 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
    

Dessutom kanske du märker att etablerings- och distributionsstegen kombineras till ett enda jobb. Om du föredrar att dela upp de här stegen i olika jobb kan du göra det genom att skapa två separata jobb i arbetsflödesfilen. Etableringsjobbet ska köras först, följt av distributionsjobbet. Distributionsjobbet bör innehålla den AZD_INITIAL_ENVIRONMENT_CONFIG hemligheten för att säkerställa att distributionsjobbet har åtkomst till miljökonfigurationen. Du behöver också avkommentera steget azd env refresh i distributionsjobbet för att säkerställa att distributionsjobbet har åtkomst till den senaste infrastrukturförsörjningen.

Skapa GitHub lagringsplats och pipeline

Med Azure Developer CLI kan du automatiskt skapa CI/CD-pipelines med rätt konfigurationer och behörigheter för att etablera och distribuera resurser till Azure. azd kan också skapa en GitHub lagringsplats för din app om den inte redan finns.

  1. Kör kommandot azd pipeline config för att konfigurera distributionspipelinen och anslut den på ett säkert sätt till Azure:

    azd pipeline config
    
  2. Välj den prenumeration som appresurserna ska etableras och distribueras till.

  3. Välj platsen Azure som ska användas för resurserna.

  4. När du tillfrågas om du vill skapa en ny Git lagringsplats i katalogen anger du y och trycker på Retur.

    Not

    När du skapade en GitHub lagringsplats måste du vara inloggad på GitHub. Det finns några val som varierar beroende på dina inställningar. När du har loggat in uppmanas du att skapa en ny lagringsplats i den aktuella katalogen.

  5. Välj Skapa en ny privat GitHub lagringsplats för att konfigurera git-fjärren.

  6. Ange ett valfritt namn för den nya GitHub lagringsplatsen eller tryck på Retur för att använda standardnamnet. azd skapar en ny lagringsplats i GitHub och konfigurerar den med de hemligheter som krävs för att autentisera för att Azure.

    En skärmbild som visar konfigurationsstegen för pipelinen.

  7. Ange y för att fortsätta när azd uppmanar dig att checka in och push-överföra dina lokala ändringar för att starta den konfigurerade pipelinen.

Utforska arbetsflödet och distributionen av GitHub Actions

  1. Gå till ditt nya GitHub-lager med länken som genereras av azd.

  2. Välj fliken Åtgärder för att visa lagringsplatsens arbetsflöden. Du bör se att det nya arbetsflödet antingen körs eller redan har slutförts. Välj arbetsflödet för att visa jobbstegen och informationen i loggarna för körningen. Du kan till exempel expandera steg som Installera .NET.NET Aspire arbetsbelastning eller Distribuera program för att se information om den slutförda åtgärden.

    En skärmbild som visar arbetsflödesstegen för GitHub Åtgärd.

  3. Välj Implementera applikation för att expandera loggarna för det steget. Du bör se två slutpunkts-URL:er utskrivna för apiservice och webfrontend. Välj någon av dessa länkar för att öppna dem på en annan webbläsarflik och utforska det distribuerade programmet.

    En skärmbild som visar de distribuerade applänkarna.

Grattis! Du har framgångsrikt distribuerat ett .NET Aspire-projekt med hjälp av Azure Developer CLI och GitHub åtgärder.

Konfigurera arbetsflödesfilen

Även om azd genererade några viktiga mallfiler åt dig behöver projektet fortfarande en Azure Pipelines-arbetsflödesfil för att stödja etablering och distributioner med CI/CD.

  1. Skapa en tom .azdo-mapp i roten för projektet. azd använder den här katalogen som standard för att identifiera Azure Pipelines-arbetsflödesfiler.

  2. I den nya mappen .azdo skapar du en annan mapp med namnet pipelines (du får .azdo/pipelines).

  3. Lägg till en ny Azure Pipelines-arbetsflödesfil i den nya mappen med namnet azure-dev.yml. Mallen azd starter innehåller en Exempel på Azure Pipelines-arbetsflödesfil som du kan kopiera till projektet.

  4. Uppdatera exempelarbetsflödet Azure Pipelines så att det innehåller ett steg för att installera arbetsbelastningen .NET Aspire. Den slutförda arbetsflödesfilen bör matcha följande:

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)

Skapa Azure DevOps-repository och pipeline

Viktig

Som du nämnde i förhandskraven måste du skapa en Azure DevOps-organisation eller välja en befintlig organisation för att slutföra stegen framåt. Du måste också skapa en personlig åtkomsttoken (PAT) med de behörigheter som anges i förhandskraven.

Med Azure Developer CLI kan du automatiskt skapa pipelines med rätt konfigurationer och behörigheter för att etablera och distribuera resurser till Azure. azd kan också skapa en Azure Pipelines-lagringsplats för din app om den inte redan finns.

  1. Kör kommandot azd pipeline config för att konfigurera distributionspipelinen och ansluta den på ett säkert sätt till Azure. Inkludera alternativet --provider azdo att använda Azure Pipelines i stället för standardkonfigurationen GitHub Actions.

    azd pipeline config --provider azdo
    
  2. Välj den prenumeration som appresurserna ska etableras och distribueras till.

  3. Välj platsen Azure som ska användas för resurserna.

  4. Klistra in den personliga åtkomsttoken som du skapade tidigare.

  5. Ange det Azure DevOps-organisationsnamn som du skapade eller valde.

  6. När du uppmanas att skapa en ny lagringsplats i den aktuella katalogen anger du och och trycker på Enter.

  7. När du uppmanas att konfigurera git-fjärr, välj Skapa ett nytt Azure DevOps-projekt.

  8. Ange ett unikt namn som du väljer för den nya lagringsplatsen, till exempel aspireazd. azd skapar en ny lagringsplats i Azure Repos och konfigurerar den med nödvändiga hemligheter som krävs för att autentisera till Azure.

    En skärmbild som visar konfigurationsstegen för pipelinen.

  9. Ange y för att fortsätta när azd uppmanar dig att checka in och push-överföra dina lokala ändringar för att starta den konfigurerade pipelinen.

Utforska pipelinen och den implementerade appen

  1. Navigera till din nya Azure-pipeline genom att använda statuslänken som skapades av azd.

    En skärmbild som visar den lyckade körningen av Azure Pipelines.

  2. Välj den slutförda pipelinekörningen för att visa sammanfattningen.

    En skärmbild som visar sammanfattningsvyn för körningen av Azure Pipelines.

  3. Välj jobblänken längst ned i vyn för att gå till jobbinformationen.

    En skärmbild som visar den detaljerade vyn över körningen av Azure Pipelines.

  4. På sidan med jobbinformation visas status för alla enskilda faser. Välj Etablera infrastruktur för att visa loggarna för den fasen, som beskriver alla etableringssteg som slutförts av azd. Längst ned i loggarna noterar du det slutliga statusmeddelandet och länkar till den etablerade Azure resursgruppen.

  5. Välj länken längst ned i utdata från provisioneringen för att navigera till den nya Azure resursgrupp.

    En skärmbild som visar de distribuerade Azure resurserna.

    Not

    Du kan också navigera direkt till den nya resursgruppen genom att söka efter den i Azure-portalen. Resursgruppens namn kommer att vara det miljönamn du angav för azd med prefixet rg-.

  6. Välj webfrontend containerapp, som är värd för den offentliga delen av webbplatsen.

  7. På sidan webfrontend information väljer du länken program-URL för att öppna webbplatsen i webbläsaren.

Viktig

Om du får ett 403 Forbidden fel när du visar webbplatsen i webbläsaren kontrollerar du att ingressinställningarna är korrekt konfigurerade. På sidan webfrontend app i Azure Portal går du till Ingress på den vänstra navigeringspanelen. Kontrollera att inkommande trafik är inställd på acceptera trafik från vilken plats som helst och spara ändringarna.

Grattis! Du har framgångsrikt distribuerat ett .NET Aspire-projekt med hjälp av Azure Developer CLI- och Azure-pipelines.

Rensa resurser

Kör följande Azure CLI-kommando för att ta bort resursgruppen när du inte längre behöver de Azure resurser som du skapade. Om du tar bort resursgruppen tas även de resurser som ingår i den bort.

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

Mer information finns i Rensa resurser i Azure.