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:
- .NET 8,0 eller .NET 9,0
- En OCI-kompatibel container-runtime, till exempel:
- Docker Desktop eller Podman. Mer information finns i Container Runtime.
- En IDE (Integrated Developer Environment) eller kodredigerare, till exempel:
- Visual Studio 2022 version 17.9 eller senare (valfritt)
-
Visual Studio Code (valfritt)
- C# Dev Kit: Tillägg (valfritt)
- JetBrains Rider med .NET.NET Aspire plugin (valfritt)
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:
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
Öppna ett nytt terminalfönster och
cd
i projektkatalogen AppHost för din .NET.NET Aspire lösning.Kör kommandot
azd init
för att initiera projektet medazd
, 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.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
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
Ange ett miljönamn som används för att namnge etablerade resurser i Azure och hantera olika miljöer, till exempel
dev
ochprod
.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.
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
I den nya mappen .github skapar du en annan mapp med namnet arbetsflöden (du får .github/workflows).
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.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.
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
Välj den prenumeration som appresurserna ska etableras och distribueras till.
Välj platsen Azure som ska användas för resurserna.
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.
Välj Skapa en ny privat GitHub lagringsplats för att konfigurera git-fjärren.
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.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
Gå till ditt nya GitHub-lager med länken som genereras av
azd
.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.
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
ochwebfrontend
. Välj någon av dessa länkar för att öppna dem på en annan webbläsarflik och utforska det distribuerade programmet.
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.
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.I den nya mappen .azdo skapar du en annan mapp med namnet pipelines (du får .azdo/pipelines).
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.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.
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
Välj den prenumeration som appresurserna ska etableras och distribueras till.
Välj platsen Azure som ska användas för resurserna.
Klistra in den personliga åtkomsttoken som du skapade tidigare.
Ange det Azure DevOps-organisationsnamn som du skapade eller valde.
När du uppmanas att skapa en ny lagringsplats i den aktuella katalogen anger du och och trycker på Enter.
När du uppmanas att konfigurera git-fjärr, välj Skapa ett nytt Azure DevOps-projekt.
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.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
Navigera till din nya Azure-pipeline genom att använda statuslänken som skapades av
azd
.Välj den slutförda pipelinekörningen för att visa sammanfattningen.
Välj jobblänken längst ned i vyn för att gå till jobbinformationen.
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.Välj länken längst ned i utdata från provisioneringen för att navigera till den nya Azure resursgrupp.
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 prefixetrg-
.Välj webfrontend containerapp, som är värd för den offentliga delen av webbplatsen.
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.
.NET Aspire