Tutorial: Implantar um projeto .NET Aspire usando as ações Azure Developer CLI e GitHub
O Azure Developer CLI (azd
) permite implantar projetos .NET Aspire usando GitHub Actions configurando automaticamente as configurações de autenticação e ambiente necessárias. Este artigo orienta-o pelo processo de criação e implementação de um projeto de .NET Aspire no Azure Container Apps usando azd
e Ações GitHub. Você aprende os seguintes conceitos:
- Explore como funciona a integração
azd
com .NET Aspire Projetos e GitHub Ações - Criar e configurar um repositório GitHub para um projeto .NET Aspire usando
azd
- Adicionar um arquivo de fluxo de trabalho do GitHub Actions à sua solução .NET Aspire
- Monitorizar e explorar execuções de fluxo de trabalho do GitHub Actions e implementações de Azure
Pré-requisitos
Para trabalhar com .NET.NET Aspire, você precisa do seguinte instalado localmente:
- .NET 8,0 ou .NET 9,0
- Um ambiente de execução de contentor compatível com OCI, como:
- Docker Desktop ou Podman. Para obter mais informações, consulte Container runtime.
- Um ambiente de desenvolvedor integrado (IDE) ou editor de código, como:
- Visual Studio 2022 versão 17.9 ou superior (opcional)
-
Visual Studio Code (Opcional)
- C# Dev Kit: Extensão (Opcional)
- JetBrains Rider com .NET.NET Aspire plug-in (Opcional)
Para obter mais informações, consulte .NET.NET Aspire configuração e ferramentase .NET.NET Aspire SDK.
- Criar uma organização de DevOps Azure ou escolher uma organização existente
-
Crie um token de acesso pessoal (PAT) Azure de DevOps e salve-o para uso posterior. Configure o token com as seguintes permissões:
- Grupos de agentes (ler, gerir)
- Construir (ler e executar)
- Código (completo)
- Projeto e equipa (ler, escrever e gerir)
- Release (ler, escrever, executar e gerir)
- Conexões de serviço (ler, consultar e gerenciar)
Você também precisa ter o Azure Developer CLIinstalado localmente (versão 1.5.1 ou superior). As opções de instalação comuns incluem o seguinte:
Criar uma solução .NET.NET Aspire
Como ponto de partida, este artigo pressupõe que tenhas criado uma solução .NET.NET Aspire a partir do modelo de aplicação inicial .NET.NET Aspire. Para obter mais informações, consulte Guia de início rápido: criar seu primeiro aplicativo .NET.NET Aspire.
Inicializar o modelo
Abra uma nova janela de terminal e
cd
no diretório AppHost do projeto de sua solução .NET.NET Aspire.Execute o comando
azd init
para inicializar seu projeto comazd
, que inspecionará a estrutura de diretórios local e determinará o tipo de aplicativo.azd init
Para obter mais informações sobre o comando
azd init
, consulte azd init.Selecione Usar código no diretório atual quando
azd
lhe apresentar duas opções para a inicialização da aplicação.? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
Depois de verificar o diretório,
solicita que confirme se encontrou o projeto AppHost correto. Selecione a opção Confirmar e continuar inicializando meu aplicativo. 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
Insira um nome de ambiente, que é usado para nomear recursos provisionados no Azure e gerenciar ambientes diferentes, como
dev
eprod
.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
gera vários arquivos e os coloca no diretório de trabalho. Estes ficheiros são:
- azure.yaml: Descreve os serviços do aplicativo, como .NET Aspire projeto AppHost, e os mapeia para Azure recursos.
-
.azure/config.json: Arquivo de configuração que informa
azd
qual é o ambiente ativo atual. - .azure/aspireazddev/.env: Contém substituições específicas do ambiente.
Adicionar o ficheiro de fluxo de trabalho de ações GitHub
Embora azd
tenha gerado alguns ficheiros de modelo essenciais para si, o projeto ainda precisa de um ficheiro de fluxo de trabalho GitHub Actions para suportar o provisionamento e desdobramentos usando CI/CD.
Crie um vazio .github pasta na raiz do seu projeto.
azd
usa este diretório por padrão para descobrir arquivos de workflow do Actions GitHub.Dica
Se estiveres a usar o macOS e tiveres dificuldades em criar uma pasta que comece com
.
, podes usar o terminal para criar a pasta. Abra o terminal e navegue até a raiz do seu projeto. Execute o seguinte comando para criar a pasta:mkdir .github
Dentro do novo .github pasta, crie outra pasta chamada fluxos de trabalho (você acabará com .github/workflows).
Adicione um novo arquivo de fluxo de trabalho do GitHub Actions à nova pasta chamada azure-dev.yml. O modelo inicial
azd
fornece um arquivo de fluxo de trabalho Sample GitHub Actions que você pode copiar para seu projeto.Atualize o fluxo de trabalho de Ações de exemplo GitHub para incluir uma etapa para instalar a carga de trabalho .NET Aspire. Isso garante que as ferramentas e os comandos .NET Aspire estejam disponíveis para a tarefa que executa as suas GitHub Ações. O arquivo de fluxo de trabalho concluído deve corresponder ao seguinte:
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@v1.0.0 - 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
Além disso, você pode notar que as etapas de provisionamento e implantação são combinadas em um único trabalho. Se preferir separar essas etapas em trabalhos diferentes, você pode fazer isso criando dois trabalhos separados no arquivo de fluxo de trabalho. O trabalho de provisionamento deve ser executado primeiro, seguido pelo trabalho de implantação. A tarefa de implementação deve incluir o segredo AZD_INITIAL_ENVIRONMENT_CONFIG
de modo a garantir que a tarefa de implementação tenha acesso às configurações do ambiente. Você também precisaria descomentar a etapa azd env refresh
na tarefa de implantação para garantir que a tarefa de implantação tenha acesso ao provisionamento de infraestrutura mais recente.
Criar o repositório GitHub e o pipeline
O Azure Developer CLI permite criar automaticamente pipelines de CI/CD com as configurações e permissões corretas para provisionar e implantar recursos para Azure.
azd
também pode criar um repositório GitHub para seu aplicativo, caso ele ainda não exista.
Execute o comando
azd pipeline config
para configurar seu pipeline de implantação e conectá-lo com segurança a Azure:azd pipeline config
Selecione a assinatura para provisionar e implantar os recursos do aplicativo.
Selecione a localização Azure a ser usada para os recursos.
Quando lhe for perguntado se pretende criar um novo repositório Git no diretório, digite y e pressione Enter.
Observação
A criação de um repositório GitHub exigia que você estivesse conectado ao GitHub. Existem algumas seleções que variam de acordo com as suas preferências. Depois de fazer login, você será solicitado a criar um novo repositório no diretório atual.
Selecione Criar um novo repositório de GitHub privado para configurar o git remoto.
Insira um nome de sua escolha para o novo repositório GitHub ou pressione enter para usar o nome padrão.
azd
cria um novo repositório no GitHub e o configura com os segredos necessários para autenticar no Azure.Digite y para prosseguir quando
azd
solicitar que você confirme e envie por push suas alterações locais para iniciar o pipeline configurado.
Explore o fluxo de trabalho e a implantação do GitHub Actions
Navegue até ao novo repositório de GitHub usando o link fornecido por
azd
.Selecione a guia Ações para visualizar os fluxos de trabalho do repositório. Você verá o novo fluxo de trabalho em execução ou já concluído. Selecione o fluxo de trabalho para exibir as etapas e os detalhes do trabalho nos logs da execução. Por exemplo, pode-se expandir etapas como Instalar carga de trabalho .NET.NET Aspire ou Implantar aplicativo para ver os detalhes da ação realizada.
Selecione Desenvolver Aplicação para expandir os registos dessa etapa. Você verá duas urls de ponto de extremidade impressas para o
apiservice
ewebfrontend
. Selecione um desses links para abri-los em outra guia do navegador e explore o aplicativo implantado.
Parabéns;! Você implantou com êxito um projeto .NET Aspire usando as Ações Azure Developer CLI e GitHub.
Configurar o arquivo de fluxo de trabalho
Embora azd
tenha gerado para você alguns ficheiros de modelo essenciais, o projeto ainda precisa de um ficheiro de fluxo de trabalho Azure Pipelines para suportar o provisionamento e as implantações usando CI/CD.
Crie uma pasta .azdo
vazia na raiz do seu projeto. azd
usa este diretório por padrão para descobrir os ficheiros de fluxo de trabalho do Azure Pipelines.Dentro da nova pasta de .azdo do
, crie outra pasta chamada pipelines (você acabará com.azdo/pipelines ).Adicione um novo arquivo de fluxo de trabalho do Azure Pipelines à nova pasta chamada azure-dev.yml. O modelo inicial
azd
fornece um arquivo de fluxo de trabalho Sample Azure Pipelines que você pode copiar para seu projeto.Atualize o fluxo de trabalho de exemplo Azure Pipelines para incluir uma etapa para instalar a carga de trabalho .NET Aspire. O arquivo de fluxo de trabalho concluído deve corresponder ao seguinte:
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)
Criar o repositório e o pipeline do Azure DevOps
Importante
Conforme mencionado nos pré-requisitos, você precisará criar uma organização Azure DevOps ou selecionar uma organização existente para concluir as etapas à frente. Você também precisará criar um Token de Acesso Pessoal (PAT) com as permissões listadas nos pré-requisitos.
O Azure Developer CLI permite-lhe criar automaticamente pipelines com as configurações e permissões corretas para provisionar e implementar recursos no Azure.
azd
também pode criar um repositório Azure Pipelines para seu aplicativo, se ele ainda não existir.
Execute o comando
azd pipeline config
para configurar seu pipeline de implantação e conectá-lo com segurança ao Azure. Inclua a opção--provider azdo
para usar Azure Pipelines em vez da configuração padrão GitHub Actions.azd pipeline config --provider azdo
Selecione a assinatura para provisionar e implantar os recursos do aplicativo.
Selecione a localização Azure a ser usada para os recursos.
Cole o Token de Acesso Pessoal criado anteriormente.
Insira o nome da Organização DevOps Azure que criaste ou selecionaste.
Quando solicitado a criar um novo repositório no diretório atual, digite y e pressione Enter.
Quando solicitado a configurar o git remoto, selecione Criar um novo projeto de DevOps Azure.
Insira um nome exclusivo de sua escolha para o novo repositório, como
aspireazd
.azd
cria um novo repositório no Azure Repos e o configura com os segredos necessários para autenticar Azure.Digite y para prosseguir quando
azd
solicitar que você confirme e envie por push suas alterações locais para iniciar o pipeline configurado.
Explore o fluxo de trabalho e a aplicação implantada
Navegue para a nova pipeline de Azure usando o link de status fornecido por
azd
.Selecione a execução do pipeline concluída para exibir o resumo.
Selecione o link do trabalho na parte inferior da exibição para navegar até os detalhes do trabalho.
A página de detalhes do trabalho mostra o status de todos os estágios individuais. Selecione Provisionar infraestrutura para exibir os logs desse estágio, que detalham todas as etapas de provisionamento concluídas até
azd
. Na parte inferior dos logs, anote a mensagem de status final e crie um link para o grupo de recursos de Azure provisionado.Selecione o link na parte inferior dos logs de saída de provisionamento para navegar até o novo grupo de recursos Azure.
Observação
Você também pode navegar diretamente para seu novo grupo de recursos pesquisando-o no Portal Azure. O nome do grupo de recursos será o nome do ambiente que você forneceu ao
azd
prefixado comrg-
.Selecione a aplicação de contêiner webfrontend, que hospeda a parte pública do seu site.
Na página de detalhes do webfrontend , selecione o link url do aplicativo para abrir o seu site no navegador.
Importante
Se você encontrar um erro de 403 Forbidden
ao visualizar seu site no navegador, verifique se as configurações de entrada estão configuradas corretamente. Na página da aplicação webfrontend
Parabéns;! Você implantou com êxito um projeto .NET Aspire usando os pipelines Azure Developer CLI e Azure.
Limpar recursos
Execute o seguinte comando Azure CLI para excluir o grupo de recursos quando não precisar mais dos recursos Azure criados. A exclusão do grupo de recursos também exclui os recursos contidos nele.
az group delete --name <your-resource-group-name>
Para obter mais informações, consulte Limpeza de recursos no Azure.