Delen via


Zelfstudie: Een .NET Aspire-project implementeren met behulp van de Azure Developer CLI- en GitHub-acties

Met de Azure Developer CLI (azd) kunt u .NET Aspire projecten implementeren met behulp van GitHub Acties door automatisch de vereiste verificatie- en omgevingsinstellingen te configureren. In dit artikel wordt u begeleid bij het maken en implementeren van een .NET Aspire project op Azure Container Apps met behulp van azd en GitHub Acties. U leert de volgende concepten:

  • Ontdek hoe azd integratie werkt met .NET Aspire projecten en GitHub acties
  • Een GitHub-opslagplaats maken en configureren voor een .NET Aspire project met behulp van azd
  • Een werkstroombestand voor GitHub acties toevoegen aan uw .NET Aspire-oplossing
  • Werkstroomuitvoeringen en GitHub-implementaties van Azure acties bewaken en verkennen

Voorwaarden

Als u met .NET.NET Aspirewilt werken, hebt u het volgende lokaal geïnstalleerd:

Zie .NET.NET Aspire setup en hulpprogramma'sen .NET.NET Aspire SDK-voor meer informatie.

  • Een Azure DevOps-organisatie maken of een bestaande organisatie kiezen
  • Maak een Azure DevOps Personal Access Token (PAT) en sla het op voor later gebruik. Configureer het token met de volgende machtigingen:
    • Agentpools (lezen, beheren)
    • Bouwen (lezen en uitvoeren)
    • Code (volledig)
    • Het project en team (lezen, schrijven en beheren)
    • Release (lezen, schrijven, uitvoeren en beheren)
    • Serviceverbindingen (lezen, query's uitvoeren en beheren)

U moet ook de Azure Developer CLIlokaal (versie 1.5.1 of hoger) hebben geïnstalleerd. Algemene installatieopties zijn onder andere:

winget install microsoft.azd

Een .NET.NET Aspire-oplossing maken

In dit artikel wordt ervan uitgegaan dat u een .NET.NET Aspire oplossing hebt gemaakt op basis van de .NET.NET Aspire Starter-toepassingssjabloon. Zie Quickstart: Uw eerste .NET.NET Aspire-app bouwenvoor meer informatie.

De sjabloon initialiseren

  1. Open een nieuw terminalvenster en cd in de AppHost projectmap van uw .NET.NET Aspire-oplossing.

  2. Voer de opdracht azd init uit om uw project te initialiseren met azd, waarmee de lokale mapstructuur wordt gecontroleerd en het type app wordt bepaald.

    azd init
    

    Zie azd initvoor meer informatie over de opdracht .

  3. Selecteer Code gebruiken in de huidige map wanneer azd u om twee initialisatieopties voor apps vraagt.

    ? 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. Nadat de map is gescand, vraagt azd u om te bevestigen dat het juiste .NET.NET AspireAppHost--project is gevonden. Selecteer de optie Bevestigen en ga verder met het initialiseren van mijn app optie.

    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. Voer een omgevingsnaam in die wordt gebruikt om ingerichte resources in Azure een naam te geven en verschillende omgevingen zoals dev en prodte beheren.

    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 genereert een aantal bestanden en plaatst deze in de werkmap. Deze bestanden zijn:

  • azure.yaml-: beschrijft de services van de app, zoals .NET Aspire AppHost-project, en wijst deze toe aan Azure resources.
  • .azure/config.json: configuratiebestand dat azd informeert wat de huidige actieve omgeving is.
  • .azure/aspireazddev/.env: Bevat omgevingsspecifieke overschrijvingen.

Het werkstroombestand GitHub Acties toevoegen

Hoewel azd een aantal essentiële sjabloonbestanden voor u hebt gegenereerd, heeft het project nog steeds een werkstroombestand GitHub Acties nodig om inrichting en implementaties te ondersteunen met BEHULP van CI/CD.

  1. Maak een lege .github map in de hoofdmap van uw project. azd gebruikt deze map standaard om werkstroombestanden voor GitHub Acties te detecteren.

    Tip

    Als u een macOS-gebruiker bent en u moeite hebt om een map te maken waarvan de naam begint met ., kunt u de terminal gebruiken om de map te maken. Open de terminal en navigeer naar de hoofdmap van uw project. Voer de volgende opdracht uit om de map te maken:

    mkdir .github
    
  2. Binnen de nieuwe .github map maakt u een andere map met de naam werkstromen (uiteindelijk hebt u .github/werkstromen).

  3. Voeg een nieuw werkstroombestand GitHub Acties toe aan de nieuwe map met de naam azure-dev.yml. De azd starterssjabloon bevat een voorbeeldwerkstroombestand GitHub Acties dat u naar uw project kunt kopiëren.

  4. Werk de voorbeeldwerkstroom GitHub Acties bij om een stap op te nemen voor het installeren van de .NET Aspire workload. Dit zorgt ervoor dat de .NET Aspire hulpprogramma's en opdrachten beschikbaar zijn voor de taak waarop uw GitHub-acties worden uitgevoerd. Het voltooide werkstroombestand moet overeenkomen met het volgende:

    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
    

Bovendien ziet u mogelijk dat de inrichtings- en implementatiestappen in één taak worden gecombineerd. Als u deze stappen liever in verschillende taken wilt scheiden, kunt u dit doen door twee afzonderlijke taken in het werkstroombestand te maken. De inrichtingstaak moet eerst worden uitgevoerd, gevolgd door de implementatietaak. De implementatietaak moet het AZD_INITIAL_ENVIRONMENT_CONFIG geheim bevatten om ervoor te zorgen dat de implementatietaak toegang heeft tot de omgevingsconfiguratie. U moet ook opmerkingen bij de azd env refresh stap in de implementatietaak verwijderen om ervoor te zorgen dat de implementatietaak toegang heeft tot de nieuwste infrastructuurinrichting.

De GitHub opslagplaats en pijplijn maken

Met de Azure Developer CLI kunt u automatisch CI/CD-pijplijnen maken met de juiste configuraties en machtigingen voor het inrichten en implementeren van resources in Azure. azd kunt ook een GitHub opslagplaats voor uw app maken als deze nog niet bestaat.

  1. Voer de opdracht azd pipeline config uit om uw implementatiepijplijn te configureren en deze veilig te verbinden met Azure:

    azd pipeline config
    
  2. Selecteer het abonnement waarnaar u de app-resources wilt inrichten en implementeren.

  3. Selecteer de Azure locatie die u voor de resources wilt gebruiken.

  4. Wanneer u wordt gevraagd of u een nieuwe Git-opslagplaats in de map wilt maken, voert u y- in en drukt u op Enter-.

    Notitie

    Het maken van een GitHub opslagplaats vereist dat u bent aangemeld bij GitHub. Er zijn enkele selecties die variëren op basis van uw voorkeuren. Nadat u zich hebt aangemeld, wordt u gevraagd een nieuwe opslagplaats te maken in de huidige map.

  5. Selecteer Een nieuwe persoonlijke GitHub opslagplaats maken om de externe git te configureren.

  6. Voer een naam van uw keuze in voor de nieuwe GitHub opslagplaats of druk op Enter om de standaardnaam te gebruiken. azd maakt een nieuwe opslagplaats in GitHub en configureert deze met de benodigde geheimen die nodig zijn voor verificatie bij Azure.

    Een schermopname met de stappen voor de pijplijnconfiguratie.

  7. Voer y- in om door te gaan wanneer azd u vraagt om uw lokale wijzigingen door te voeren en te pushen om de geconfigureerde pijplijn te starten.

De werkstroom en implementatie van GitHub Acties verkennen

  1. Navigeer naar uw nieuwe GitHub-opslagplaats met de link die wordt weergegeven door azd.

  2. Selecteer het tabblad Acties om de werkstromen van de opslagplaats weer te geven. U ziet dat de nieuwe werkstroom wordt uitgevoerd of al is voltooid. Selecteer de werkstroom om de taakstappen en details in de logboeken van de uitvoering weer te geven. U kunt bijvoorbeeld stappen uitvouwen, zoals Install .NET.NET Aspire Workload of Deploy application om de details van de voltooide actie te bekijken.

    Een schermopname van de GitHub actiewerkstroomstappen.

  3. Kies Toepassing implementeren om de logs voor die stap uit te breiden. Er moeten twee eindpunt-URL's worden weergegeven voor de apiservice en webfrontend. Selecteer een van deze koppelingen om ze te openen in een ander browsertabblad en verken de geïmplementeerde toepassing.

    Een schermopname met de geïmplementeerde app-koppelingen.

Gefeliciteerd! U hebt een .NET Aspire project geïmplementeerd met behulp van de Azure Developer CLI- en GitHub-acties.

Het werkstroombestand configureren

Hoewel azd een aantal essentiële sjabloonbestanden voor u hebt gegenereerd, heeft het project nog steeds een Azure Pipelines-werkstroombestand nodig om inrichting en implementaties te ondersteunen met behulp van CI/CD.

  1. Maak een lege map .azdo in de hoofdmap van uw project. azd gebruikt deze map standaard om Azure Pipelines-werkstroombestanden te detecteren.

  2. Maak in de nieuwe map .azdo een andere map met de naam pijplijnen (uiteindelijk hebt u .azdo/pipelines).

  3. Voeg een nieuw Azure Pipelines-werkstroombestand toe aan de nieuwe map met de naam azure-dev.yml. De azd starterssjabloon bevat een voorbeeldwerkstroombestand voor Azure Pijplijnen dat u naar uw project kunt kopiëren.

  4. Werk de voorbeeldwerkstroom Azure Pipelines bij om een stap op te nemen voor het installeren van de .NET Aspire workload. Het voltooide werkstroombestand moet overeenkomen met het volgende:

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)

De Azure DevOps-opslagplaats en -pijplijn maken

Belangrijk

Zoals vermeld in de vereisten, moet u een Azure DevOps-organisatie maken of een bestaande organisatie selecteren om de stappen vooruit te voltooien. Je moet ook een persoonlijke toegangstoken (PAT) maken met de machtigingen zoals vermeld in de vereisten.

Met de Azure Developer CLI kunt u automatisch pijplijnen maken met de juiste configuraties en machtigingen voor het inrichten en implementeren van resources voor Azure. azd kunt ook een Azure Pipelines-opslagplaats voor uw app maken als deze nog niet bestaat.

  1. Voer de opdracht azd pipeline config uit om uw implementatiepijplijn te configureren en deze veilig te verbinden met Azure. Neem de --provider azdo optie op om Azure Pijplijnen te gebruiken in plaats van de standaardconfiguratie GitHub Acties.

    azd pipeline config --provider azdo
    
  2. Selecteer het abonnement waarnaar u de app-resources wilt inrichten en implementeren.

  3. Selecteer de Azure locatie die u voor de resources wilt gebruiken.

  4. Plak het persoonlijke toegangstoken dat u eerder hebt gemaakt.

  5. Voer de Azure DevOps-organisatienaam in die u hebt gemaakt of geselecteerd.

  6. Wanneer u wordt gevraagd om een nieuwe opslagplaats in de huidige map te maken, voert u y- in en drukt u op Enter-.

  7. Wanneer u wordt gevraagd om de externe git te configureren, selecteert u Een nieuw Azure DevOps-project maken.

  8. Voer een unieke naam van uw keuze in voor de nieuwe opslagplaats, zoals aspireazd. azd maakt een nieuwe opslagplaats in Azure opslagplaatsen en configureert deze met de benodigde geheimen die nodig zijn voor verificatie bij Azure.

    een schermopname met de stappen voor de pijplijnconfiguratie.

  9. Voer y- in om door te gaan wanneer azd u vraagt om uw lokale wijzigingen door te voeren en te pushen om de geconfigureerde pijplijn te starten.

De pijplijn en de geïmplementeerde app verkennen

  1. Navigeer naar de nieuwe Azure-pijplijn met de statuskoppeling verstrekt door azd.

    Een schermopname met de geslaagde uitvoering van Azure Pipelines.

  2. Selecteer de voltooide pijplijnuitvoering om de samenvatting weer te geven.

    Een schermopname met de overzichtsweergave van de Azure Pipelines-uitvoering.

  3. Selecteer de taakkoppeling onderaan de weergave om naar de taakdetails te gaan.

    Een schermopname met de gedetailleerde weergave van de Azure Pipelines-uitvoering.

  4. Op de pagina met taakdetails ziet u de status van alle afzonderlijke fasen. Selecteer Infrastructuur inrichten om de logboeken voor die fase weer te geven, waarin alle inrichtingsstappen worden beschreven die zijn voltooid door azd. Noteer onder aan de logboeken het laatste statusbericht en maak een koppeling naar de ingerichte Azure resourcegroep.

  5. Selecteer de link onderaan de logboeken van de inrichtingsuitvoer om naar de nieuwe Azure resourcegroep te gaan.

    Een schermopname met de geïmplementeerde Azure resources.

    Notitie

    U kunt ook rechtstreeks naar uw nieuwe resourcegroep navigeren door ernaar te zoeken in de Azure Portal. De naam van uw resourcegroep is de omgevingsnaam die u hebt opgegeven voor azd, voorafgegaan door rg-.

  6. Selecteer de webfrontend container-app, die als host fungeert voor het openbare gedeelte van uw site.

  7. Selecteer op de pagina webfrontend details de toepassings-URL koppeling om uw site in de browser te openen.

Belangrijk

Als er een 403 Forbidden fout optreedt bij het weergeven van uw site in de browser, controleert u of de instellingen voor inkomend verkeer correct zijn geconfigureerd. Ga op de webfrontend app pagina in het Azure-Portaal naar Ingress in de linker navigatiebalk. Zorg ervoor dat inkomend verkeer is ingesteld op Verkeer vanaf elke locatie accepteren en uw wijzigingen opslaan.

Gefeliciteerd! U hebt een .NET Aspire project geïmplementeerd met behulp van de Azure Developer CLI en Azure Pipelines.

Resources opschonen

Voer de volgende Azure CLI-opdracht uit om de resourcegroep te verwijderen wanneer u de Azure resources die u hebt gemaakt niet meer nodig hebt. Als u de resourcegroep verwijdert, worden ook de resources in de resourcegroep verwijderd.

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

Zie Resources opschonen in Azurevoor meer informatie.