Dela via


Självstudie: Distribuera ett Aspire projekt med hjälp av Azure Developer CLI

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

  • Utforska hur azd integrering fungerar med Aspire projekt
  • Skapa och konfigurera en GitHub DevOps-lagringsplats Azure för ett Aspire projekt med hjälp av azd
  • Övervaka och utforska arbetsflödet för GitHub Actions eller Azure DevOps-pipelineexekveringar och Azure implementeringar

Förutsättningar

För att arbeta med Aspirebehöver du följande installerat lokalt:

För mer information, se Aspire konfiguration och verktyg och 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)
    • Kompilera (läs och kör)
    • Kod (fullständig)
    • Projekt och team (läsa, skriva, 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 Aspire lösning

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

Initiera mallen

  1. Öppna ett nytt terminalfönster och kör cd för att navigera till katalogen för din 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 du uppmanas att använda tre 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
      Create a minimal project
    
  4. När du har genomsökt katalogen azd uppmanas du att bekräfta att den hittade rätt 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 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.

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.

    Anmärkning

    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 körningens loggar. Du kan till exempel expandera steg som 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 implementerat ett Aspire-projekt med hjälp av Azure Developer CLI och GitHub-åtgärder.

Konfigurera arbetskatalog för lösningar för flera projekt

När du lägger till GitHub Åtgärder i en befintlig lösning för flera projekt Aspire där AppHost-projektet inte finns i rotkatalogen kan du behöva konfigurera parametern working-directory för vissa arbetsflödessteg. I det här avsnittet förklaras när och hur du gör dessa justeringar.

När det behövs konfiguration av arbetskatalogen

Kommandot azd pipeline config genererar ett GitHub åtgärdsarbetsflöde som förutsätter att ditt Aspire AppHost-projekt finns i rotkatalogen på lagringsplatsen. Men i många verkliga scenarier, särskilt när du lägger Aspire till i befintliga program, kan AppHost-projektet vara i en underkatalog.

Om lagringsplatsens struktur till exempel ser ut så här:

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

De genererade arbetsflödesstegen för Etableringsinfrastruktur och Distribuera program måste köras från MyAspireApp.AppHost katalogen, inte från lagringsplatsens rot.

GitHub Uppdatera arbetsflödet Åtgärder

När du har kört azd pipeline configundersöker du den genererade arbetsflödesfilen i .github/workflows/azure-dev.yml. Leta efter steg som kör azd kommandon och lägg till parametern working-directory efter behov.

Här är ett exempel på de ursprungliga genererade stegen:

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

Uppdatera de här stegen så att parametern inkluderas working-directory :

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

Hitta rätt arbetskatalog

Arbetskatalogen ska peka på mappen som innehåller ditt Aspire AppHost-projekt (projektet som innehåller filen azure.yaml som genereras av azd init). Du kan identifiera den här katalogen genom att:

  1. Leta efter projektet med paketreferensen Aspire.AppHost i filen .csproj .
  2. Hitta katalogen som innehåller filen azure.yaml .
  3. Leta upp projektet som refereras till i din lösning som samordnar andra tjänster.

Anmärkning

Vissa azd kommandon, till exempel azd init under pipelinekonfigurationen, kan också behöva parametern working-directory om de inte körs från AppHost-projektkatalogen.

Skapa Azure DevOps-repository och pipeline

Viktigt!

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
    

    Viktigt!

    Innan du kör azd pipeline configkontrollerar du att du har kört azd init för att initiera projektet. Om du stöter på fel som "inget projekt finns" under pipelinekörningen kan du läsa felsökningsavsnittet för lösningar.

  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 Azure Pipeline-körningen.

  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.

    Anmärkning

    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.

Viktigt!

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 Aspire-projekt med hjälp av Azure Developer CLI och Azure pipelines.

Felsöka Azure Utplacering av DevOps-pipeline

Det här avsnittet beskriver vanliga problem som kan uppstå när du distribuerar Aspire projekt med DevOps-pipelines Azure .

FEL: det finns inget projekt. för att skapa ett nytt projekt kör du azd init

Problem: Under etableringssteget i DevOps-pipelinen Azure visas felmeddelandet:

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

Orsak: Det här felet beror på att azd init-kommandot genererar filer (azure.yaml och .azure-mappen) som vanligtvis inte läggs till i ditt repository. När pipelinen körs i en ren miljö finns inte dessa filer, vilket gör azd att kommandona misslyckas.

Lösning: Det finns flera sätt att lösa problemet:

Lägg till ett azd init steg i Azure DevOps-pipelinen före försörjningssteget. Du kan använda flaggorna --from-code och --no-prompt för att köra kommandot icke-interaktivt:

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

Anmärkning

Om du får frågor även med --no-promptkan du prova att köra azd init och azd env new som separata steg, eller använda miljövariabler för att ge svar på eventuella frågor. Flaggan --from-code instruerar azd att använda den befintliga koden i den aktuella katalogen i stället för att skapa ett nytt projekt från en mall.

Se till att definiera följande variabler i pipelinen:

  • AZURE_ENV_NAME: Ditt miljönamn (till exempel dev eller prod).
  • AZURE_LOCATION: Din Azure region (till exempel eastus2).
  • AZURE_SUBSCRIPTION_ID: Ditt prenumerations-ID Azure .

Alternativ 2: Committa nödvändiga filer till ditt källförråd

Om du föredrar att spara de genererade filerna i ditt arkiv:

  1. Kör azd init lokalt i projektkatalogen.
  2. Lägg till den genererade azure.yaml-filen till ditt arkiv.
  3. Du kan valfritt lägga till mappen i .azure-lagringsplatsen om du vill bevara miljöspecifika inställningar.

Anmärkning

Mappen .azure innehåller miljöspecifik konfiguration som kan innehålla känslig information. Granska innehållet noggrant innan du lägger till det i din repository.

Alternativ 3: Använd azd pipeline-konfiguration med rätt initiering

Se till att du kör azd pipeline config --provider azdo efter att du framgångsrikt har kört azd init lokalt. Det här kommandot bör konfigurera pipelinen med rätt konfiguration som hanterar initieringen automatiskt.

Om du fortsätter att uppleva problem kontrollerar du att:

  • Projektstrukturen matchar vad som azd förväntas för Aspire projekt.
  • Du kör kommandona från rätt katalog (vanligtvis där .sln filen finns).
  • Din Azure DevOps-tjänstanslutning har de behörigheter som krävs för etablering av resurser.

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.