Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure Developer CLI (azd) permite que você implante projetos Aspire usando ações GitHub ou pipelines DevOps Azure, configurando automaticamente as definições de autenticação e do ambiente necessárias. Este artigo explica o processo de criação e implantação de um Aspire projeto no Azure Container Apps usando azd. Você aprenderá os seguintes conceitos:
- Explore como a integração
azdfunciona com projetos Aspire - Criar e configurar um repositório DevOps GitHub ou Azure para um projeto Aspire usando
azd - Monitorar e explorar o fluxo de trabalho do GitHub Actions ou executar pipelines do Azure DevOps e implantações do Azure
Pré-requisitos
Para trabalhar com Aspire, você precisa do seguinte instalado localmente:
-
.NET 8.0 ou .NET 9.0.
- Aspire A partir da versão 9.4, .NET há suporte para 10 Versão Prévia 5 ou posterior.
- Um runtime de contêiner compatível com OCI, como:
- Docker Desktop ou Podman. Para obter mais informações, consulte Tempo de execução do contêiner.
- Um IDE (Ambiente de Desenvolvedor Integrado) ou um 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 Aspire plug-in (opcional)
Para obter mais informações, consulte Aspire configuração e ferramentas e Aspire SDK.
- Criar uma organização Azure DevOps ou escolher uma organização existente
-
Criar um PAT (Token de Acesso Pessoal) Azure DevOps e salvá-lo para uso posterior. Configure o token com as seguintes permissões:
- Pools de agentes (ler, gerenciar)
- Build (leitura e execução)
- Código (completo)
- Projeto e equipe (leitura, gravação e gerenciamento)
- Liberar (leitura, gravação, execução e gerenciamento)
- 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 comuns de instalação incluem o seguinte:
Criar uma Aspire solução
Como ponto de partida, este artigo pressupõe que você criou uma Aspire solução a partir do Aspire modelo de Aplicativo Inicial . Para obter mais informações, consulte Início Rápido: Criar seu primeiro Aspire aplicativo.
Inicializar o modelo
Abra uma nova janela de terminal e
cdno diretório da sua solução Aspire.Execute o comando
azd initpara inicializar seu projeto comazd, que inspecionará a estrutura do diretório local e determinará o tipo de aplicativo.azd initPara obter mais informações sobre o comando
azd init, consulte azd init.Selecione Usar código no diretório atual quando o
azdsolicitar a você três opções de inicialização de aplicativo.? 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 projectDepois de verificar o diretório,
azdsolicita que você confirme se ele encontrou o projeto Aspire 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 exitInsira um nome de ambiente, que é usado para nomear recursos provisionados em Azure e gerenciar ambientes diferentes, como
deveprod.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 arquivos são:
- azure.yaml: Descreve os serviços do aplicativo, como o projeto Aspire AppHost, e os mapeia para recursos Azure.
-
.azure/config.json: arquivo de configuração que informa
azdqual é o ambiente ativo atual. - .azure/aspireazddev/.env: contém substituições específicas para o ambiente.
Criar o repositório do GitHub e o pipeline
O Azure Developer CLI permite que você crie automaticamente pipelines de CI/CD com as configurações e permissões corretas para provisionar e implantar recursos no Azure.
azd também poderá criar um repositório GitHub para seu aplicativo se ele ainda não existir.
Execute o comando
azd pipeline configpara configurar o pipeline de implantação e conectá-lo com segurança ao Azure:azd pipeline configSelecione a assinatura para a qual provisionar e implantar os recursos do aplicativo.
Selecione o local do Azure para usar os recursos.
Quando solicitado a criar um novo repositório Git no diretório, insira e e pressione Enter.
Observação
A criação de um repositório GitHub exigia que você fosse conectado ao GitHub. Há algumas seleções que variam de acordo com suas preferências. Depois de fazer logon, 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.
azdcria um novo repositório no GitHub e o configura com os segredos necessários para autenticar no Azure.
Insira y para continuar quando o
azdpedir que você confirme e envie suas alterações locais para iniciar o pipeline configurado.
Explorar o fluxo de trabalho e a implantação do GitHub Actions
Navegue até o novo repositório GitHub usando o link fornecido por
azd.Selecione a guia Ações para exibir os fluxos de trabalho do repositório. Você deve ver o novo fluxo de trabalho em execução ou já concluído. Selecione o fluxo de trabalho para exibir as etapas de trabalho e os detalhes nos logs da execução. Por exemplo, você pode expandir etapas como Implantar aplicativo para ver os detalhes da ação concluída.
Selecione Implantar aplicativo para expandir os logs daquela etapa. Você deverá ver duas URLs de ponto de extremidade impressas para o
apiservicee owebfrontend. Selecione qualquer um desses links para abri-los em outra guia do navegador e explorar o aplicativo implantado.
Parabéns! Você implantou com êxito um Aspire projeto usando Azure Developer CLI e GitHub Actions.
Configurar o diretório de trabalho para soluções de vários projetos
Quando você adiciona GitHub Ações a uma solução multiprojeta Aspire existente em que o projeto AppHost não está no diretório raiz, talvez seja necessário configurar o working-directory parâmetro para determinadas etapas de fluxo de trabalho. Esta seção explica quando e como fazer esses ajustes.
Quando é necessária a configuração do diretório de trabalho
O azd pipeline config comando gera um GitHub Fluxo de Trabalho Actions que pressupõe que seu Aspire projeto AppHost esteja no diretório raiz do repositório. No entanto, em muitos cenários do mundo real, especialmente ao adicionar Aspire a aplicativos existentes, o projeto AppHost pode estar em um subdiretório.
Por exemplo, se a estrutura do repositório for semelhante a esta:
└───📂 MyAspireApp
├───📂 MyAspireApp.ApiService
├───📂 MyAspireApp.AppHost
│ ├─── MyAspireApp.AppHost.csproj
│ └─── AppHost.cs
├───📂 MyAspireApp.Web
└─── MyAspireApp.sln
As etapas de fluxo de trabalho geradas para Provisionar Infraestrutura e Implantar Aplicativo precisam ser executadas no MyAspireApp.AppHost diretório, não na raiz do repositório.
Atualizando o fluxo de trabalho do Actions
Depois de executar azd pipeline config, examine o arquivo de fluxo de trabalho gerado em .github/workflows/azure-dev.yml. Procure as etapas que executam azd comandos e adicione o working-directory parâmetro conforme necessário.
Aqui está um exemplo das etapas originais geradas:
- 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 }}
Atualize estas etapas para incluir o working-directory parâmetro:
- 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 }}
Localizando o diretório de trabalho correto
O diretório de trabalho deve apontar para a pasta que contém seu Aspire projeto AppHost (o projeto que contém o arquivo azure.yaml gerado por azd init). Você pode identificar esse diretório:
- Procure o projeto com a referência de
Aspire.AppHostpacote em seu.csprojarquivo. - Localize o diretório que contém o arquivo azure.yaml .
- Localize o projeto referenciado em sua solução que orquestra outros serviços.
Observação
Alguns azd comandos, como azd init durante a configuração do pipeline, também podem precisar do parâmetro working-directory se não estiverem sendo executados no diretório do projeto AppHost.
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 os passos a seguir. Você também precisará criar um Token de Acesso Pessoal (PAT) com as permissões listadas nos pré-requisitos.
O Azure Developer CLI permite que você crie automaticamente pipelines com as configurações e permissões corretas para provisionar e implantar recursos no Azure.
azd também poderá criar um repositório Azure Pipelines para seu aplicativo se ele ainda não existir.
Execute o comando
azd pipeline configpara configurar o pipeline de implantação e conectá-lo com segurança ao Azure. Inclua a opção--provider azdopara usar Azure Pipelines em vez da configuração padrão do GitHub Actions.azd pipeline config --provider azdoImportante
Antes de executar
azd pipeline config, verifique se você executouazd initcom êxito para inicializar seu projeto. Se você encontrar erros como "nenhum projeto existe" durante a execução do pipeline, consulte a seção de solução de problemas para soluções.Selecione a assinatura para a qual provisionar e implantar os recursos do aplicativo.
Selecione o local do Azure para usar os recursos.
Cole o Token de Acesso Pessoal criado anteriormente.
Insira o nome da Organização Azure DevOps que você criou ou selecionou.
Quando solicitado a criar um novo repositório no diretório atual, insira y e pressione Enter.
Quando solicitado a configurar o git remoto, selecione Criar um novo Azure DevOps Project.
Insira um nome exclusivo de sua escolha para o novo repositório, como
aspireazd.azdcria um novo repositório no Azure Repos e o configura com os segredos necessários para autenticar-se no Azure.Insira y para continuar quando o
azdpedir que você confirme e envie suas alterações locais para iniciar o pipeline configurado.
Explorar o pipeline e o aplicativo implantado
Navegue até o seu novo pipeline do Azure usando o link de status gerado pelo
azd.Selecione a execução de pipeline concluída para exibir o resumo.
Selecione o link de 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 Provisionamento de Infraestrutura para exibir os logs dessa etapa, que detalham todas as etapas de provisionamento concluídas pelo
azd. Na parte inferior dos logs, anote a mensagem de status final e vincule-se ao grupo de recursos Azure provisionado.Selecione o link na parte inferior dos registros de provisionamento para navegar até o novo grupo de recursos Azure.
Observação
Você também pode navegar diretamente para o novo grupo de recursos pesquisando-o no Portal do Azure. O nome do grupo de recursos será o nome do ambiente que você forneceu para
azdprefixado comrg-.Selecione o aplicativo de contêiner webfrontend, que hospeda a parte voltada para o público do seu site.
Na página de detalhes do webfrontend, selecione o link URL do aplicativo para abrir seu site no navegador.
Importante
Se você encontrar um erro 403 Forbidden ao exibir seu site no navegador, verifique se as configurações de entrada estão configuradas corretamente. Na página do aplicativo do webfrontend no Portal do Azure, navegue até Entrada na navegação à esquerda. Verifique se Tráfego de entrada está definido como Aceitando tráfego de qualquer lugar e salve suas alterações.
Parabéns! Você implantou com êxito um projeto de Aspire usando os Azure Developer CLI e Azure Pipelines.
Solucionar problemas de implantação de pipeline do Azure DevOps
Esta seção aborda problemas comuns que você pode encontrar ao implantar Aspire projetos usando Azure pipelines de DevOps.
ERRO: nenhum projeto existe; para criar um novo projeto, execute azd init
Problema: durante a etapa de provisionamento do pipeline do Azure DevOps, você encontra a mensagem de erro:
ERROR: no project exists; to create a new project, run azd init
Causa: esse erro ocorre porque o comando azd init gera arquivos (azure.yaml e a pasta .azure) que normalmente não são commitados no repositório. Quando o pipeline é executado em um ambiente limpo, esses arquivos não existem, resultando em falha nos comandos.
Solução: há várias abordagens para resolver esse problema:
Opção 1: executar o azd init em seu pipeline (Recomendado)
Adicione uma azd init etapa ao pipeline Azure do DevOps antes da etapa de provisionamento. Você pode usar os sinalizadores --from-code e --no-prompt para executar o comando não interativamente:
- 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)
Observação
Se você encontrar prompts mesmo com --no-prompt, tente executar azd init e azd env new como etapas separadas ou use variáveis de ambiente para fornecer respostas a quaisquer prompts. O --from-code flag informa ao azd para usar o código existente no diretório atual, em vez de criar um novo projeto a partir de um modelo.
Certifique-se de definir as seguintes variáveis em seu pipeline:
-
AZURE_ENV_NAME: o nome do ambiente (por exemplo,devouprod). -
AZURE_LOCATION: sua Azure região (por exemplo,eastus2). -
AZURE_SUBSCRIPTION_ID: sua Azure ID de assinatura.
Opção 2: Enviar os arquivos necessários para seu repositório
Se você preferir confirmar os arquivos gerados em seu repositório:
- Execute
azd initlocalmente no diretório do projeto. - Adicione o arquivo gerado
azure.yamlao repositório. - Opcionalmente, adicione a
.azurepasta ao repositório se desejar preservar as configurações específicas do ambiente.
Observação
A .azure pasta contém uma configuração específica do ambiente que pode incluir informações confidenciais. Examine o conteúdo cuidadosamente antes de se comprometer com seu repositório.
Opção 3: usar a configuração de pipeline do azd com a inicialização adequada
Certifique-se de executar azd pipeline config --provider azdo após executar com êxito azd init localmente. Esse comando deve configurar o pipeline com a configuração correta que manipula a inicialização automaticamente.
Se você continuar enfrentando problemas, verifique se:
- Sua estrutura de projeto corresponde ao que
azdespera de projetos Aspire. - Você está executando os comandos do diretório correto (normalmente onde o
.slnarquivo está localizado). - Sua Azure conexão de serviço de DevOps tem as permissões necessárias para provisionar recursos.
Limpar os recursos
Execute o seguinte comando Azure CLI para excluir o grupo de recursos quando você não precisar mais dos recursos de Azure que você criou. Excluir o 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 em Azure.