Compartir a través de


Tutorial: Implementación de un proyecto de .NET Aspire mediante las acciones de Azure Developer CLI y GitHub

El Azure Developer CLI (azd) permite implementar proyectos de .NET Aspire mediante acciones de GitHub mediante la configuración automática de la autenticación y el entorno necesarios. En este artículo se explica el proceso de creación e implementación de un proyecto de .NET Aspire en Azure Container Apps mediante acciones de azd y GitHub. Aprendes los siguientes conceptos:

  • Explore cómo funciona la integración de azd con proyectos de .NET Aspire y acciones de GitHub
  • Creación y configuración de un repositorio de GitHub para un proyecto de .NET Aspire mediante azd
  • Agregar un archivo de flujo de trabajo de acciones de GitHub a tu solución de .NET Aspire
  • Supervisar y explorar las ejecuciones de los flujos de trabajo de Acciones de GitHub y las implementaciones de Azure

Prerrequisitos

Para trabajar con .NET.NET Aspire, necesita lo siguiente instalado localmente:

Para obtener más información, consulte configuración y herramientas de .NET.NET Aspirey sdk de .NET.NET Aspire.

  • Azure organización de DevOps o elegir una organización existente
  • Azure de token de acceso personal (PAT) de DevOps y guárdelo para su uso posterior. Configure el token con los permisos siguientes:
    • Grupos de agentes (leer, administrar)
    • Compilación (lectura y ejecución)
    • Código (completo)
    • Proyecto y equipo (lectura, escritura y administración)
    • Lanzamiento (lectura, escritura, ejecución y administración)
    • Conexiones de servicio (lectura, consulta y administración)

También debe instalar localmente Azure Developer CLI (versión 1.5.1 o posterior). Entre las opciones de instalación comunes se incluyen las siguientes:

winget install microsoft.azd

Creación de una solución de .NET.NET Aspire

Como punto de partida, en este artículo se supone que ha creado una solución de .NET.NET Aspire a partir de la plantilla de aplicación de inicio .NET.NET Aspire de. Para obtener más información, consulte Inicio rápido: Crear tu primera aplicación de .NET.NET Aspire.

Inicialización de la plantilla

  1. Abra una nueva ventana de terminal e cd en el directorio de proyecto AppHost de la solución .NET.NET Aspire.

  2. Ejecute el comando azd init para inicializar el proyecto con azd, que inspeccionará la estructura del directorio local y determinará el tipo de aplicación.

    azd init
    

    Para obtener más información sobre el comando azd init, vea azd init.

  3. Seleccione Usar código en el directorio actual cuando azd le pida dos opciones de inicialización de la aplicación.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
    
  4. Después de examinar el directorio, azd le pedirá que confirme que encontró el proyecto correcto de .NET.NET AspireAppHost. Seleccione la opción Confirmar y continuar con la inicialización de la aplicación.

    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. Escriba un nombre de entorno, que se usa para asignar un nombre a los recursos aprovisionados en Azure y administrar entornos diferentes, como dev y 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 genera una serie de archivos y los coloca en el directorio de trabajo. Estos archivos son:

  • azure .yaml: Describe los servicios de la app, como el proyecto AppHost .NET Aspire, y los asigna a recursos Azure.
  • .azure/config.json: archivo de configuración que informa azd cuál es el entorno activo actual.
  • .azure/aspireazddev/.env: contiene invalidaciones específicas del entorno.

Añadir el archivo de flujo de trabajo de GitHub Actions

Aunque azd generó algunos archivos de plantilla esenciales para usted, el proyecto todavía necesita un archivo de flujo de trabajo de acciones de GitHub para admitir el aprovisionamiento y las implementaciones mediante CI/CD.

  1. Cree una carpeta github vacía en la raíz de su proyecto. azd usa este directorio de forma predeterminada para detectar archivos de flujo de trabajo de acciones de GitHub.

    Propina

    Si estás en macOS y tienes dificultades para crear una carpeta con un .inicial, puedes usar la terminal para crear la carpeta. Abra el terminal y vaya a la raíz del proyecto. Ejecute el siguiente comando para crear la carpeta :

    mkdir .github
    
  2. Dentro del nuevo .github carpeta, cree otra carpeta denominada flujos de trabajo (terminará con .github/workflows).

  3. Agregue un nuevo archivo de flujo de trabajo de acciones de GitHub a la nueva carpeta denominada azure-dev.yml. La plantilla de inicio azd proporciona un archivo de flujo de trabajo de acciones de ejemplo GitHub que puede copiar en su proyecto.

  4. Actualice el flujo de trabajo de GitHub Actions de ejemplo para incluir un paso para instalar la carga de trabajo de .NET Aspire. Esto garantiza que las herramientas y los comandos de .NET Aspire estén disponibles para el trabajo que ejecuta las acciones de GitHub. El archivo de flujo de trabajo completado debe coincidir con lo siguiente:

    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
    

Además, puede observar que los pasos de aprovisionamiento e implementación se combinan en un único trabajo. Si prefiere separar estos pasos en distintos trabajos, puede hacerlo creando dos trabajos independientes en el archivo de flujo de trabajo. El trabajo de aprovisionamiento debe ejecutarse primero, seguido del trabajo de implementación. El trabajo de implementación debe incluir el secreto de AZD_INITIAL_ENVIRONMENT_CONFIG para asegurarse de que el trabajo de implementación tiene acceso a la configuración del entorno. También tendría que descomentar el paso azd env refresh en el trabajo de implementación para asegurarse de que el trabajo de implementación tenga acceso al último aprovisionamiento de infraestructura.

Crear el repositorio GitHub y la canalización

El Azure Developer CLI permite crear automáticamente canalizaciones de CI/CD con las configuraciones y permisos correctos para aprovisionar e implementar recursos en Azure. azd también puede crear un repositorio de GitHub para la aplicación si aún no existe.

  1. Ejecute el comando azd pipeline config para configurar la canalización de implementación y conectarla de forma segura a Azure:

    azd pipeline config
    
  2. Seleccione la suscripción para aprovisionar e implementar los recursos de la aplicación.

  3. Seleccione la ubicación Azure para utilizar los recursos.

  4. Cuando se le pida que cree un nuevo repositorio de Git en el directorio, escriba y y presione Entrar.

    Nota

    La creación de un repositorio de GitHub requiere que haya iniciado sesión en GitHub. Hay algunas selecciones que varían en función de sus preferencias. Después de iniciar sesión, se le pedirá que cree un nuevo repositorio en el directorio actual.

  5. Seleccione Crear un nuevo repositorio de GitHub privado para configurar el git remoto.

  6. Escriba un nombre de su elección para el nuevo repositorio de GitHub o presione ENTRAR para usar el nombre predeterminado. azd crea un nuevo repositorio en GitHub y lo configura con los secretos necesarios para autenticarse en Azure.

    Captura de pantalla que muestra los pasos de configuración de la canalización.

  7. Escriba y para continuar cuando azd le pida que confirme e inserte los cambios locales para iniciar la canalización configurada.

Explora el flujo de trabajo de acciones de GitHub y su implementación

  1. Vaya al nuevo repositorio de GitHub utilizando el enlace generado por azd.

  2. Seleccione la pestaña Acciones para ver los flujos de trabajo del repositorio. Debería ver el nuevo flujo de trabajo en ejecución o ya completado. Seleccione el flujo de trabajo para ver los pasos del trabajo y los detalles de los registros de la ejecución. Por ejemplo, puede expandir pasos como Instalar .NET.NET Aspire Workload o Implementar aplicación para ver los detalles de la acción completada.

    Captura de pantalla que muestra los pasos del flujo de trabajo de GitHub.

  3. Seleccione Implementar aplicación para expandir los registros de ese paso. Debería ver dos direcciones URL de punto de conexión impresas para el apiservice y webfrontend. Seleccione cualquiera de estos vínculos para abrirlos en otra pestaña del explorador y explorar la aplicación implementada.

    Captura de pantalla que muestra los vínculos de la aplicación implementada.

¡Felicidades! Ha implementado correctamente un proyecto de .NET Aspire mediante las acciones de Azure Developer CLI y GitHub.

Configuración del archivo de flujo de trabajo

Aunque azd generó algunos archivos de plantilla esenciales para usted, el proyecto todavía necesita un archivo de flujo de trabajo de canalizaciones de Azure para admitir el aprovisionamiento y las implementaciones mediante CI/CD.

  1. Cree una carpeta .azdo vacía en la raíz del proyecto. azd utiliza este directorio por defecto para descubrir archivos de flujo de trabajo de Azure Pipelines.

  2. Dentro de la nueva carpeta .azdo, cree otra carpeta denominada canalizaciones (terminará con .azdo/pipelines).

  3. Agregue un nuevo archivo de flujo de trabajo de canalizaciones de Azure a la nueva carpeta denominada azure-dev.yml. La plantilla de arranque de azd proporciona un archivo de flujo de trabajo de Pipelines de ejemplo Azure que puede copiar en su proyecto.

  4. Actualice el flujo de trabajo de Azure Pipelines de ejemplo para incluir un paso para instalar la carga de trabajo de .NET Aspire. El archivo de flujo de trabajo completado debe coincidir con lo siguiente:

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)

Crea el repositorio y el pipeline de Azure DevOps

Importante

Como se mencionó en los requisitos previos, deberá crear una organización Azure DevOps o seleccionar una organización existente para completar los pasos que se indican a continuación. También deberá crear un token de acceso personal (PAT) con los permisos enumerados en los requisitos necesarios.

El Azure Developer CLI permite crear automáticamente canalizaciones con las configuraciones y permisos correctos para aprovisionar e implementar recursos en Azure. azd también puede crear un repositorio de Azure pipelines para tu aplicación si aún no existe.

  1. Ejecute el comando azd pipeline config para configurar la canalización de implementación y conectarla de forma segura a Azure. Incluya la opción --provider azdo para usar canalizaciones de Azure en lugar de la configuración predeterminada GitHub Actions.

    azd pipeline config --provider azdo
    
  2. Seleccione la suscripción para aprovisionar e implementar los recursos de la aplicación.

  3. Seleccione la ubicación Azure para utilizar los recursos.

  4. Pegue el token de acceso personal que creó anteriormente.

  5. Escriba el Azure nombre de la organización de DevOps que creó o seleccionó.

  6. Cuando se le pida que cree un nuevo repositorio en el directorio actual, escriba y y presione Intro.

  7. Cuando se le pida que configure el git remoto, seleccione Crear un nuevo Azure Proyecto DevOps.

  8. Escriba un nombre único de su elección para el nuevo repositorio, como aspireazd. azd crea un nuevo repositorio en Azure Repos y lo configura con los secretos necesarios para autenticarse en Azure.

    Captura de pantalla que muestra los pasos de configuración de la canalización.

  9. Escriba y para continuar cuando azd le pida que confirme e inserte los cambios locales para iniciar la canalización configurada.

Exploración de la canalización e implementación de la aplicación

  1. Vaya a su nuevo pipeline de Azure utilizando el enlace de estado generado por azd.

    Captura de pantalla que muestra la ejecución correcta de canalizaciones de Azure.

  2. Seleccione la ejecución de canalización completada para ver el resumen.

    Captura de pantalla que muestra la vista de resumen de la ejecución de canalizaciones de Azure.

  3. Seleccione el vínculo del trabajo en la parte inferior de la vista para ir a los detalles del trabajo.

    Captura de pantalla que muestra la vista detallada de la ejecución de las tuberías de Azure.

  4. La página de detalles del trabajo muestra el estado de todas las fases individuales. Seleccione Aprovisionar infraestructura para ver los registros de esa fase, que detallan todos los pasos de aprovisionamiento completados por azd. En la parte inferior de los registros, tome nota del mensaje de estado final y vincule al grupo de recursos Azure aprovisionado.

  5. Seleccione el vínculo situado en la parte inferior de los registros de salida de aprovisionamiento para ir al nuevo grupo de recursos Azure.

    Captura de pantalla que muestra los recursos de Azure implementados.

    Nota

    También puede navegar directamente a su nuevo grupo de recursos buscándolo en el Portal de Azure. El nombre del grupo de recursos será el nombre del entorno que proporcionó a azd, prefijado con rg-.

  6. Seleccione la aplicación contenedora webfrontend, que hospeda la parte pública de tu sitio.

  7. En la página de detalles de webfrontend, seleccione el enlace url de la aplicación para abrir el sitio en el navegador.

Importante

Si se produce un error de 403 Forbidden al ver el sitio en el explorador, asegúrese de que la configuración de entrada está configurada correctamente. En la página aplicación webfrontend del portal de Azure, vaya a entrada en el panel de navegación izquierdo. Asegúrese de que tráfico de entrada esté configurado en Aceptar tráfico desde cualquier lugar y guarde los cambios.

¡Felicidades! Implementó correctamente un proyecto de .NET Aspire utilizando el Azure Developer CLI y los pipelines de Azure.

Limpieza de recursos

Ejecute el siguiente comando Azure CLI para eliminar el grupo de recursos cuando ya no necesite los recursos de Azure que creó. Al eliminar el grupo de recursos también se eliminan los recursos contenidos en él.

az group delete --name <your-resource-group-name>

Para obtener más información, consulte el apartado Limpieza de recursos en Azure.