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:
- .NET 8,0 of .NET 9,0
- Een OCI-compatibele containerruntime, zoals:
- Docker Desktop of Podman. Voor meer informatie, zie Container Runtime.
- Een IDE (Integrated Developer Environment) of code-editor, zoals:
- Visual Studio 2022 versie 17.9 of hoger (optioneel)
-
Visual Studio Code (optioneel)
- C# Dev Kit: extensie- (optioneel)
- JetBrains Rider met .NET.NET Aspire plug-in (Optioneel)
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:
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
Open een nieuw terminalvenster en
cd
in de AppHost projectmap van uw .NET.NET Aspire-oplossing.Voer de opdracht
azd init
uit om uw project te initialiseren metazd
, waarmee de lokale mapstructuur wordt gecontroleerd en het type app wordt bepaald.azd init
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
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
Voer een omgevingsnaam in die wordt gebruikt om ingerichte resources in Azure een naam te geven en verschillende omgevingen zoals
dev
enprod
te 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.
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
Binnen de nieuwe .github map maakt u een andere map met de naam werkstromen (uiteindelijk hebt u .github/werkstromen).
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.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.
Voer de opdracht
azd pipeline config
uit om uw implementatiepijplijn te configureren en deze veilig te verbinden met Azure:azd pipeline config
Selecteer het abonnement waarnaar u de app-resources wilt inrichten en implementeren.
Selecteer de Azure locatie die u voor de resources wilt gebruiken.
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.
Selecteer Een nieuwe persoonlijke GitHub opslagplaats maken om de externe git te configureren.
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.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
Navigeer naar uw nieuwe GitHub-opslagplaats met de link die wordt weergegeven door
azd
.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.
Kies Toepassing implementeren om de logs voor die stap uit te breiden. Er moeten twee eindpunt-URL's worden weergegeven voor de
apiservice
enwebfrontend
. Selecteer een van deze koppelingen om ze te openen in een ander browsertabblad en verken de geïmplementeerde toepassing.
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.
Maak een lege map .azdo in de hoofdmap van uw project.
azd
gebruikt deze map standaard om Azure Pipelines-werkstroombestanden te detecteren.Maak in de nieuwe map .azdo een andere map met de naam pijplijnen (uiteindelijk hebt u .azdo/pipelines).
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.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.
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
Selecteer het abonnement waarnaar u de app-resources wilt inrichten en implementeren.
Selecteer de Azure locatie die u voor de resources wilt gebruiken.
Plak het persoonlijke toegangstoken dat u eerder hebt gemaakt.
Voer de Azure DevOps-organisatienaam in die u hebt gemaakt of geselecteerd.
Wanneer u wordt gevraagd om een nieuwe opslagplaats in de huidige map te maken, voert u y- in en drukt u op Enter-.
Wanneer u wordt gevraagd om de externe git te configureren, selecteert u Een nieuw Azure DevOps-project maken.
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.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
Navigeer naar de nieuwe Azure-pijplijn met de statuskoppeling verstrekt door
azd
.Selecteer de voltooide pijplijnuitvoering om de samenvatting weer te geven.
Selecteer de taakkoppeling onderaan de weergave om naar de taakdetails te gaan.
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.Selecteer de link onderaan de logboeken van de inrichtingsuitvoer om naar de nieuwe Azure resourcegroep te gaan.
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 doorrg-
.Selecteer de webfrontend container-app, die als host fungeert voor het openbare gedeelte van uw site.
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.