Partilhar via


Tutorial: Implantar um Aspire projeto usando o Azure Developer CLI

O Azure Developer CLI (azd) permite-lhe implantar projetos Aspire usando GitHub Actions ou pipelines Devops Azure ao configurar automaticamente as definições de autenticação e ambiente necessárias. Este artigo orienta o leitor pelo processo de criação e implantação de um Aspire projeto no Azure Container Apps utilizando o azd. Você aprende os seguintes conceitos:

  • Explore como a integração de azd funciona com os projetos de Aspire
  • Criar e configurar um repositório DevOps GitHub ou Azure para um projeto Aspire usando azd
  • Monitore e explore o fluxo de trabalho do GitHub Actions, as execuções de pipelines de DevOps do Azure e as implementações de Azure

Pré-requisitos

Para trabalhar com Aspire, necessita do seguinte software instalado localmente:

Para obter mais informações, consulte Aspire configuração e ferramentas e Aspire SDK.

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:

winget install microsoft.azd

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 Aplicativo inicial . Para obter mais informações, consulte Guia de início rápido: criar seu primeiro Aspire aplicativo.

Inicializar o modelo

  1. Abra uma nova janela do terminal e cd no diretório da sua Aspire solução.

  2. Execute o comando azd init para inicializar seu projeto com azd, 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.

  3. Selecione Usar código no diretório atual quando azd lhe solicitar três opções de inicialização da app.

    ? 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. Depois de verificar o diretório, azd solicita que você confirme que 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 exit
    
  5. Insira um nome de ambiente, que é usado para nomear recursos provisionados no Azure e gerenciar ambientes diferentes, como dev e 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 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 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.

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.

  1. Execute o comando azd pipeline config para configurar seu pipeline de implantação e conectá-lo com segurança a Azure:

    azd pipeline config
    
  2. Selecione a assinatura para provisionar e implantar os recursos do aplicativo.

  3. Selecione a localização Azure a ser usada para os recursos.

  4. 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.

  5. Selecione Criar um novo repositório de GitHub privado para configurar o git remote.

  6. 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.

    Uma captura de tela mostrando as etapas de configuração do pipeline.

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

  1. Navegue até ao novo repositório de GitHub usando o link fornecido por azd.

  2. 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, você pode expandir etapas como Implantar aplicativo para ver os detalhes da ação concluída.

    Uma captura de tela mostrando as etapas do fluxo de trabalho GitHub Action.

  3. Selecione Desenvolver Aplicação para expandir os registos dessa etapa. Você verá duas URLs de endpoints para o apiservice e webfrontend. Selecione um desses links para abri-los em outra guia do navegador e explore o aplicativo implantado.

    Uma captura de tela mostrando os links do aplicativo implantado.

Parabéns! Você implantou com êxito um Aspire projeto usando o Azure Developer CLI e as GitHub Ações.

Configurar diretório de trabalho para soluções de vários projetos

Quando você adiciona GitHub Actions a uma solução multiprojeto Aspire existente em que o projeto AppHost não está no diretório raiz, talvez seja necessário configurar o parâmetro para determinadas etapas do working-directory fluxo de trabalho. Esta seção explica quando e como fazer esses ajustes.

Quando a configuração do diretório de trabalho é necessária

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 tiver esta aparência:

└───📂 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 a partir do diretório MyAspireApp.AppHost, não da raiz do repositório.

Atualizar o fluxo de trabalho de Ações

Depois de executar azd pipeline config, examine o arquivo de fluxo de trabalho gerado no .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 geradas originalmente:

- 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 pelo azd init). Você pode identificar este diretório da seguinte forma:

  1. Procura pelo projeto que possui a referência do Aspire.AppHost pacote no seu .csproj arquivo.
  2. Localize o diretório que contém o arquivo azure.yaml .
  3. 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 working-directory parâmetro se não estiverem sendo executados a partir do 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 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.

  1. 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
    

    Importante

    Antes de executar azd pipeline config, certifique-se de ter executado azd init com ê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 obter soluções.

  2. Selecione a assinatura para provisionar e implantar os recursos do aplicativo.

  3. Selecione a localização Azure a ser usada para os recursos.

  4. Cole o Token de Acesso Pessoal criado anteriormente.

  5. Insira o nome da Organização DevOps Azure que criaste ou selecionaste.

  6. Quando solicitado a criar um novo repositório no diretório atual, digite y e pressione Enter.

  7. Quando solicitado a configurar o git remote, selecione Criar um novo Azure Projeto DevOps.

  8. 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.

    Uma captura de tela mostrando as etapas de configuração do pipeline.

  9. 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

  1. Navegue para a nova pipeline de Azure usando o link de status fornecido por azd.

    Uma captura de tela mostrando a execução bem-sucedida do Azure Pipelines.

  2. Para exibir o resumo, selecione a execução concluída do pipeline.

    Uma captura de ecrã mostrando a vista de resumo da execução do Azure Pipelines.

  3. Selecione o link do trabalho na parte inferior da exibição para navegar até os detalhes do trabalho.

    Uma captura de ecrã mostrando a vista detalhada da execução do Azure Pipelines.

  4. A página de detalhes do trabalho mostra o status de todos os estágios individuais. Selecione Provisionar Infraestrutura para ver os logs dessa fase, os quais detalham todas as etapas de provisionamento concluídas por azd. No final dos logs, anote a mensagem de status final e o link para o grupo de recursos Azure provisionado.

  5. Selecione o link na parte inferior dos logs de saída de provisionamento para navegar até o novo grupo de recursos Azure.

    Uma captura de tela mostrando os recursos de Azure implantados.

    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 com rg-.

  6. Selecione a aplicação de contêiner webfrontend, que hospeda a parte pública do seu site.

  7. 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 no Portal do , navegue para Ingress no menu de navegação à esquerda. Certifique-se de que Tráfego de entrada está definido para Aceitar tráfego de qualquer lugar e guarde as suas alterações.

Parabéns! Você implantou com êxito um projeto Aspire usando as Azure Developer CLI e Azure Pipelines.

Resolver problemas na Azure implantação da pipeline de DevOps

Esta seção aborda problemas comuns que você pode encontrar ao implantar Aspire projetos usando Azure pipelines de DevOps.

ERRO: não existe nenhum projeto; Para criar um novo projeto, execute o AZD Init

Problema: Durante a etapa de provisionamento do pipeline Azure de DevOps, você encontra a mensagem de erro:

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

Causa: Este erro ocorre porque o azd init comando gera arquivos (azure.yaml e a .azure pasta) que normalmente não são confirmados no repositório. Quando o pipeline é executado em um ambiente limpo, esses arquivos não existem, fazendo com que azd os comandos falhem.

Solução: Existem várias abordagens para resolver este problema:

Adicione uma azd init etapa ao seu Azure pipeline de DevOps antes da etapa de provisionamento. Você pode usar os --from-code sinalizadores e --no-prompt para executar o comando de forma não interativa:

- 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 parâmetro diz ao azd para que use o código existente no diretório atual em vez de criar um novo projeto a partir de um template.

Certifique-se de definir as seguintes variáveis em seu pipeline:

  • AZURE_ENV_NAME: O nome do seu ambiente (por exemplo, dev ou prod).
  • AZURE_LOCATION: A sua Azure região (por exemplo, eastus2).
  • AZURE_SUBSCRIPTION_ID: O seu Azure ID de subscrição.

Opção 2: Confirmar os arquivos necessários no repositório

Se preferir confirmar os arquivos gerados no repositório:

  1. Execute azd init localmente no diretório do projeto.
  2. Adicione o arquivo gerado azure.yaml ao repositório.
  3. Opcionalmente, adicione a .azure pasta ao repositório se quiser preservar as configurações específicas do ambiente.

Observação

A .azure pasta contém configurações específicas do ambiente que podem incluir informações confidenciais. Revise o conteúdo cuidadosamente antes de se comprometer com seu repositório.

Opção 3: Usar azd pipeline config com inicialização adequada

Certifique-se de executar azd pipeline config --provider azdo depois de executar azd init localmente com êxito. Este comando deve configurar o pipeline com a configuração correta que manipula a inicialização automaticamente.

Se continuar a ter problemas, verifique se:

  • A estrutura do seu projeto corresponde ao que azd espera para projetos de Aspire.
  • Você está executando os comandos do diretório correto (normalmente onde o .sln arquivo está localizado).
  • Sua Azure conexão de serviço DevOps tem as permissões necessárias para provisionar recursos.

Limpeza de 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.