Compartilhar via


Tutorial: Implantar um Aspire projeto usando o Azure Developer CLI

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 azd funciona 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:

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:

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 de Aplicativo Inicial . Para obter mais informações, consulte Início Rápido: Criar seu primeiro Aspire aplicativo.

Inicializar o modelo

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

  2. Execute o comando azd init para inicializar seu projeto com azd, que inspecionará a estrutura do diretório 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 o azd solicitar 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 project
    
  4. Depois de verificar o diretório, azd solicita 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 exit
    
  5. Insira um nome de ambiente, que é usado para nomear recursos provisionados em 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 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 azd qual é 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.

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

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

  3. Selecione o local do Azure para usar os recursos.

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

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

  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. Insira y para continuar quando o azd pedir 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

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

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

    Uma captura de tela mostrando as etapas do fluxo de trabalho da Ação GitHub.

  3. Selecione Implantar aplicativo para expandir os logs daquela etapa. Você deverá ver duas URLs de ponto de extremidade impressas para o apiservice e o webfrontend. Selecione qualquer um desses links para abri-los em outra guia do navegador e explorar o aplicativo implantado.

    Uma captura de tela mostrando os links do 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:

  1. Procure o projeto com a referência de Aspire.AppHost pacote em 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 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.

  1. Execute o comando azd pipeline config para configurar o 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 do GitHub Actions.

    azd pipeline config --provider azdo
    

    Importante

    Antes de executar azd pipeline config, verifique se você executou 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 soluções.

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

  3. Selecione o local do Azure para usar os recursos.

  4. Cole o Token de Acesso Pessoal criado anteriormente.

  5. Insira o nome da Organização Azure DevOps que você criou ou selecionou.

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

  7. Quando solicitado a configurar o git remoto, selecione Criar um novo Azure DevOps Project.

  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-se no Azure.

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

  9. Insira y para continuar quando o azd pedir que você confirme e envie suas alterações locais para iniciar o pipeline configurado.

Explorar o pipeline e o aplicativo implantado

  1. Navegue até o seu novo pipeline do Azure usando o link de status gerado pelo azd.

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

  2. Selecione a execução de pipeline concluída para exibir o resumo.

    Uma captura de tela mostrando a visão de resumo da execução dos pipelines do Azure.

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

    Uma captura de tela mostrando a visão detalhada da execução dos pipelines do Azure.

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

  5. Selecione o link na parte inferior dos registros 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 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 azd prefixado com rg-.

  6. Selecione o aplicativo de contêiner webfrontend, que hospeda a parte voltada para o público do seu site.

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

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, dev ou prod).
  • 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:

  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 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 azd espera de projetos Aspire.
  • Você está executando os comandos do diretório correto (normalmente onde o .sln arquivo 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.