Delen via


Zelfstudie: Een project implementeren Aspire met behulp van de Azure Developer CLI

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

  • Ontdekken hoe azd integratie werkt met Aspire projecten
  • Een DevOps-opslagplaats GitHub of Azure maken en configureren voor een Aspire project met behulp van azd
  • Bewaken en verkennen van de werkstroom voor GitHub-acties, de Azure DevOps-pijplijnuitvoeringen en de Azure-implementaties.

Vereiste voorwaarden

Om met Aspire te werken, moet u het volgende lokaal geïnstalleerd hebben:

Zie setup en hulpprogramma's en SDK voor meer informatieAspire.Aspire

  • 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)
    • Compileren (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 versie 1.5.1 of hoger van de Azure Developer CLIlokaal geïnstalleerd hebben. Algemene installatieopties zijn onder andere:

winget install microsoft.azd

Aspire Een oplossing maken

In dit artikel wordt ervan uitgegaan dat u een Aspire oplossing hebt gemaakt op basis van de Aspire starterstoepassingssjabloon . Zie Quickstart: Uw eerste Aspire app bouwen voor meer informatie.

De sjabloon initialiseren

  1. Open een nieuw terminalvenster en cd ga naar de map van uw 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 wordt gevraagd om drie opties voor app-initialisatie.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
      Create a minimal project
    
  4. Nadat u de map hebt gescand, azd wordt u gevraagd om te bevestigen dat het juiste 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 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.

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-.

    Opmerking

    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 privé-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 zoals De toepassing implementeren uitvouwen om de details van de voltooide actie weer te geven.

    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 Aspire project geïmplementeerd met behulp van de Azure Developer CLI en GitHub acties.

Werkmap configureren voor oplossingen voor meerdere projecten

Wanneer u Acties toevoegt GitHub aan een bestaande oplossing voor meerdere projecten Aspire waarbij het AppHost-project zich niet in de hoofdmap bevindt, moet u mogelijk de working-directory parameter configureren voor bepaalde werkstroomstappen. In deze sectie wordt uitgelegd wanneer en hoe u deze aanpassingen kunt aanbrengen.

Wanneer de configuratie van de werkmap nodig is

Met de azd pipeline config opdracht wordt een GitHub werkstroom acties gegenereerd die ervan uitgaat dat uw Aspire AppHost-project zich in de hoofdmap van uw opslagplaats bevindt. In veel praktijkscenario's, met name bij het toevoegen Aspire aan bestaande toepassingen, kan het AppHost-project zich echter in een submap bevinden.

Als uw opslagplaatsstructuur er bijvoorbeeld als volgt uitziet:

└───📂 MyAspireApp
    ├───📂 MyAspireApp.ApiService
    ├───📂 MyAspireApp.AppHost
    │    ├─── MyAspireApp.AppHost.csproj
    │    └─── AppHost.cs
    ├───📂 MyAspireApp.Web
    └─── MyAspireApp.sln

De gegenereerde werkstroomstappen voor de inrichtingsinfrastructuur en de implementatietoepassing moeten worden uitgevoerd vanuit de MyAspireApp.AppHost map, niet vanuit de hoofdmap van de opslagplaats.

De Actiewerkstroom bijwerken

Nadat azd pipeline config is uitgevoerd, onderzoekt u het gegenereerde werkstroombestand in .github/workflows/azure-dev.yml. Zoek naar stappen die opdrachten uitvoeren azd en voeg indien nodig de working-directory parameter toe.

Hier volgt een voorbeeld van de oorspronkelijke gegenereerde stappen:

- name: Provision Infrastructure
  run: azd provision --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

Werk deze stappen bij om de working-directory parameter op te nemen:

- name: Provision Infrastructure
  run: azd provision --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

De juiste werkmap zoeken

De werkmap moet verwijzen naar de map met uw Aspire AppHost-project (het project dat het bestand azure.yaml bevat dat is gegenereerd door azd init). U kunt deze map identificeren door:

  1. Zoek naar het project dat de Aspire.AppHost pakketreferentie in zijn .csproj bestand heeft.
  2. Zoek de map met het bestand azure.yaml .
  3. Zoek het project waarnaar wordt verwezen in uw oplossing waarmee andere services worden ingedeeld.

Opmerking

Sommige azd opdrachten, zoals azd init tijdens het instellen van de pijplijn, hebben mogelijk ook de working-directory parameter nodig als ze niet worden uitgevoerd vanuit de AppHost-projectmap.

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
    

    Belangrijk

    Voordat u azd pipeline config uitvoert, zorg ervoor dat u azd init met succes hebt uitgevoerd om uw project te initialiseren. Als er fouten optreden zoals 'geen project bestaat' tijdens het uitvoeren van de pijplijn, raadpleegt u de sectie probleemoplossing voor oplossingen.

  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 repository aan in Azure Repos en configureert deze met de benodigde gegevens die nodig zijn voor authenticatie 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.

    Opmerking

    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 Aspire project geïmplementeerd met behulp van de Azure Developer CLI en Azure pijplijnen.

Problemen met devOps-pijplijnimplementatie oplossen Azure

In deze sectie worden veelvoorkomende problemen behandeld die kunnen optreden bij het implementeren van Aspire projecten met behulp van Azure DevOps-pijplijnen.

FOUT: er bestaat geen project; om een nieuw project te maken, voert u azd init uit

Probleem: Tijdens de inrichtingsstap van uw Azure DevOps-pijplijn treedt het foutbericht op:

ERROR: no project exists; to create a new project, run azd init

Oorzaak: Deze fout treedt op omdat met de azd init opdracht bestanden (azure.yaml en de .azure map) worden gegenereerd die doorgaans niet worden doorgevoerd in uw opslagplaats. Wanneer de pijplijn wordt uitgevoerd in een schone omgeving, bestaan deze bestanden niet, waardoor azd opdrachten mislukken.

Oplossing: Er zijn verschillende benaderingen om dit probleem op te lossen:

Voeg vóór de inrichtingsstap een azd init stap toe aan uw Azure DevOps-pijplijn. U kunt de --from-code opdracht en --no-prompt vlaggen gebruiken om de opdracht niet interactief uit te voeren:

- task: AzureCLI@2
  displayName: 'Initialize Azure Developer CLI'
  inputs:
    azureSubscription: '$(AZURE_SERVICE_CONNECTION)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      azd init --from-code --no-prompt
      azd env new $(AZURE_ENV_NAME) --location $(AZURE_LOCATION) --subscription $(AZURE_SUBSCRIPTION_ID)

Opmerking

Als u zelfs prompts tegenkomt met --no-prompt, probeer dan azd init en azd env new als afzonderlijke stappen uit te voeren, of gebruik omgevingsvariabelen om antwoorden te geven op eventuele prompts. De --from-code vlag vertelt azd dat de bestaande code in de huidige map moet worden gebruikt in plaats van een nieuw project te maken op basis van een sjabloon.

Zorg ervoor dat u de volgende variabelen in uw pijplijn definieert:

  • AZURE_ENV_NAME: uw omgevingsnaam (bijvoorbeeld dev of prod).
  • AZURE_LOCATION: Uw Azure regio (bijvoorbeeld eastus2).
  • AZURE_SUBSCRIPTION_ID: uw abonnements-id Azure .

Optie 2: Vereiste bestanden doorvoeren in uw opslagplaats

Als u de gegenereerde bestanden liever doorvoert in uw opslagplaats:

  1. Voer azd init lokaal uit in uw projectmap.
  2. Voeg het gegenereerde azure.yaml bestand toe aan uw opslagplaats.
  3. Voeg desgewenst de .azure map toe aan uw opslagplaats als u omgevingsspecifieke instellingen wilt behouden.

Opmerking

De .azure map bevat omgevingsspecifieke configuratie die mogelijk gevoelige informatie bevat. Controleer de inhoud zorgvuldig voordat u commit naar uw repository.

Optie 3: azd pipeline-configuratie gebruiken met de juiste initialisatie

Zorg ervoor dat u azd pipeline config --provider azdo uitvoert nadat u azd init lokaal hebt uitgevoerd. Met deze opdracht moet u de pijplijn instellen met de juiste configuratie waarmee de initialisatie automatisch wordt verwerkt.

Als u problemen blijft ondervinden, controleert u of:

  • Uw projectstructuur komt overeen met wat azd verwacht voor Aspire projecten.
  • U voert de opdrachten uit vanuit de juiste map (meestal waar het .sln bestand zich bevindt).
  • Uw Azure DevOps-serviceverbinding heeft de benodigde machtigingen voor het inrichten van resources.

De hulpbronnen 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.