Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El Azure Developer CLI (azd) permite implementar proyectos de Aspire a través de Acciones de GitHub o de canalizaciones Devops de Azure mediante la configuración automática de la autenticación y del entorno necesario. En este artículo se explica el proceso de creación e implementación de un Aspire proyecto en Azure Container Apps mediante azd. Aprendes los siguientes conceptos:
- Explorar cómo funciona la integración de
azdcon los proyectos Aspire - Crea y configura un GitHub o Azure repositorio DevOps para un Aspire proyecto mediante
azd - Supervisa y explora el flujo de trabajo de Acciones GitHub, las ejecuciones de la canalización de DevOps Azure y las implementaciones de Azure.
Prerrequisitos
Para trabajar con Aspire, necesita lo siguiente instalado localmente:
-
.NET 8.0 o .NET 9.0.
- Aspire A partir de la versión 9.4, .NET se admite la versión preliminar 5 o posterior de 10.
- Un entorno de ejecución de contenedor compatible con OCI, como:
- Docker Escritorio o Podman. Para obtener más información, consulte container runtime.
- Un entorno para desarrolladores integrado (IDE) o un editor de código, como:
- Visual Studio 2022 versión 17.9 o posterior (opcional)
-
Visual Studio Code (opcional)
- C# Dev Kit: extensión (opcional)
- JetBrains Rider con Aspire complemento (opcional)
Para obtener más información, consulte Aspire configuración y herramientas y Aspire SDK.
- Azure organización de DevOps o elegir una organización existente
-
Crear un Azure 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)
- Compilar (lectura y ejecución)
- Código (completo)
- Proyecto y equipo (leer, escribir y gestionar)
- 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:
Crea una Aspire solución
Como punto de partida, este artículo asume que ha creado una Aspire solución usando la plantilla Aspire Starter Application. Para obtener más información, consulte Inicio rápido: Compilación de la primera Aspire aplicación.
Inicialización de la plantilla
Abra una nueva ventana de terminal y
cden el directorio de la solución Aspire.Ejecute el comando
azd initpara inicializar el proyecto conazd, que inspeccionará la estructura del directorio local y determinará el tipo de aplicación.azd initPara obtener más información sobre el comando
azd init, vea azd init.Seleccione Usar código en el directorio actual cuando
azdle pida tres 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 Create a minimal projectDespués de examinar el directorio,
azdle pide que confirme que encontró el proyecto Aspire correcto. 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 exitEscriba un nombre de entorno, que se usa para asignar un nombre a los recursos aprovisionados en Azure y administrar entornos diferentes, como
devyprod.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 aplicación, como el proyecto Aspire AppHost, y los asigna a Azure recursos.
-
.azure/config.json: archivo de configuración que informa
azdcuál es el entorno activo actual. - .azure/aspireazddev/.env: Contiene anulaciones específicas del entorno.
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.
Ejecute el comando
azd pipeline configpara configurar la canalización de implementación y conectarla de forma segura a Azure:azd pipeline configSeleccione la suscripción para aprovisionar e implementar los recursos de la aplicación.
Seleccione la ubicación Azure para utilizar los recursos.
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.
Seleccione Crear un nuevo repositorio de GitHub privado para configurar el repositorio git remoto.
Escriba un nombre de su elección para el nuevo repositorio de GitHub o presione ENTRAR para usar el nombre predeterminado.
azdcrea un nuevo repositorio en GitHub y lo configura con los secretos necesarios para autenticarse en Azure.
Escriba y para continuar cuando
azdle 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
Vaya al nuevo repositorio de GitHub utilizando el enlace generado por
azd.Seleccione la pestaña Acciones para ver los flujos de trabajo del repositorio. Deberías 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 Implementar aplicación para ver los detalles de la acción completada.
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
apiserviceywebfrontend. Seleccione cualquiera de estos vínculos para abrirlos en otra pestaña del explorador y explorar la aplicación implementada.
¡Felicidades! Implementó correctamente un proyecto Aspire utilizando las Acciones de Azure Developer CLI y GitHub.
Configuración del directorio de trabajo para soluciones de varios proyectos
Al agregar GitHub Acciones a una solución de varios proyectos Aspire existente en la que el proyecto AppHost no está en el directorio raíz, es posible que tenga que configurar el working-directory parámetro para determinados pasos de flujo de trabajo. En esta sección se explica cuándo y cómo realizar estos ajustes.
Cuando se necesita la configuración del directorio de trabajo
El azd pipeline config comando genera un GitHub flujo de trabajo de Actions que asume que tu proyecto Aspire AppHost está en el directorio raíz del repositorio. Sin embargo, en muchos escenarios reales, especialmente al agregar Aspire a aplicaciones existentes, el proyecto AppHost podría estar en un subdirectorio.
Por ejemplo, si la estructura del repositorio tiene este aspecto:
└───📂 MyAspireApp
├───📂 MyAspireApp.ApiService
├───📂 MyAspireApp.AppHost
│ ├─── MyAspireApp.AppHost.csproj
│ └─── AppHost.cs
├───📂 MyAspireApp.Web
└─── MyAspireApp.sln
Los pasos de flujo de trabajo generados para la infraestructura de aprovisionamiento e implementación de la aplicación deben ejecutarse desde el MyAspireApp.AppHost directorio, no desde la raíz del repositorio.
Actualización del flujo de trabajo de GitHub acciones
Después de ejecutar azd pipeline config, examine el archivo de flujo de trabajo generado en .github/workflows/azure-dev.yml. Busque los pasos que ejecutan azd comandos y agregan el working-directory parámetro según sea necesario.
Este es un ejemplo de los pasos generados 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 }}
Actualice estos pasos para incluir el 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 }}
Búsqueda del directorio de trabajo correcto
El directorio de trabajo debe apuntar a la carpeta que contiene su proyecto Aspire AppHost (el proyecto que contiene el archivo azure.yaml generado por azd init). Para identificar este directorio, haga lo siguiente:
- Busque el proyecto con la referencia de paquete
Aspire.AppHosten el archivo.csproj. - Busque el directorio que contiene el archivo azure.yaml .
- Busque el proyecto al que se hace referencia en la solución que organiza otros servicios.
Nota:
Algunos azd comandos, como azd init durante la instalación de la canalización, también pueden necesitar el working-directory parámetro si no se ejecutan desde el directorio del proyecto AppHost.
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.
Ejecute el comando
azd pipeline configpara configurar la canalización de implementación y conectarla de forma segura a Azure. Incluya la opción--provider azdopara usar Azure Pipelines en lugar de la configuración predeterminada de GitHub Actions.azd pipeline config --provider azdoImportante
Antes de ejecutar
azd pipeline config, asegúrese de que se ha ejecutadoazd initcorrectamente para inicializar el proyecto. Si encuentra errores como "no existe ningún proyecto" durante la ejecución de la canalización, consulte la sección de solución de problemas de soluciones.Seleccione la suscripción para aprovisionar e implementar los recursos de la aplicación.
Seleccione la ubicación Azure para utilizar los recursos.
Pegue el token de acceso personal que creó anteriormente.
Escriba el Azure nombre de la organización de DevOps que creó o seleccionó.
Cuando se le pida que cree un nuevo repositorio en el directorio actual, escriba y y presione Intro.
Cuando se le pida que configure el git remoto, seleccione Crear una nueva Azure DevOps Project.
Escriba un nombre único de su elección para el nuevo repositorio, como
aspireazd.azdcrea un nuevo repositorio en Azure Repos y lo configura con los secretos necesarios para autenticarse en Azure.Escriba y para continuar cuando
azdle pida que confirme e inserte los cambios locales para iniciar la canalización configurada.
Explora la canalización y la aplicación desplegada
Vaya a su nuevo pipeline de Azure utilizando el enlace de estado generado por
azd.Seleccione la ejecución del pipeline completado para ver el resumen.
Seleccione el vínculo del trabajo en la parte inferior de la vista para ir a los detalles del trabajo.
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.Seleccione el vínculo situado en la parte inferior de los registros de salida de aprovisionamiento para ir al nuevo grupo de recursos Azure.
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 conrg-.Seleccione la aplicación contenedora webfrontend, que hospeda la parte pública de tu sitio.
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 de la aplicación Webfrontend en el Azure Portal, navega a Ingreso en el panel de navegación a la izquierda. 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 Aspire utilizando los Azure Developer CLI y Azure Pipelines.
Solución de problemas de implementación de Azure canalización de DevOps
En esta sección se tratan los problemas comunes que pueden surgir al implementar Aspire proyectos mediante Azure canalizaciones de DevOps.
ERROR: no existe ningún proyecto; para crear un nuevo proyecto, ejecute azd init.
Problema: durante el paso de aprovisionamiento de la canalización de Azure DevOps, aparece el mensaje de error:
ERROR: no project exists; to create a new project, run azd init
Causa: Este error se produce porque el azd init comando genera archivos (azure.yaml y la carpeta) que normalmente no se confirman en el .azure repositorio. Cuando la canalización se ejecuta en un entorno limpio, estos archivos no existen, lo que provoca un error en los azd comandos.
Solución: Hay varios enfoques para resolver este problema:
Opción 1: Ejecutar azd init en la canalización (recomendado)
Agregue un paso azd init a su canalización de DevOps Azure antes del paso de aprovisionamiento. Puede usar las marcas --from-code y --no-prompt para ejecutar el comando de forma no interactiva:
- 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)
Nota:
Si encuentra mensajes incluso con --no-prompt, intente ejecutar azd init y azd env new como pasos independientes o use variables de entorno para proporcionar respuestas a las solicitudes. La --from-code marca indica azd que use el código existente en el directorio actual en lugar de crear un nuevo proyecto a partir de una plantilla.
Asegúrese de definir las siguientes variables en la canalización:
-
AZURE_ENV_NAME: el nombre del entorno (por ejemplo,devoprod). -
AZURE_LOCATION: su Azure región (por ejemplo,eastus2). -
AZURE_SUBSCRIPTION_ID: Su identificación de suscripción Azure.
Opción 2: Confirmar los archivos necesarios en el repositorio
Si prefiere confirmar los archivos generados en el repositorio:
- Ejecute
azd initlocalmente en el directorio del proyecto. - Agregue el archivo generado
azure.yamlal repositorio. - Opcionalmente, agregue la
.azurecarpeta al repositorio si desea conservar la configuración específica del entorno.
Nota:
La .azure carpeta contiene una configuración específica del entorno que puede incluir información confidencial. Revise detenidamente el contenido antes de subirlo a su repositorio.
Opción 3: Utilizar la configuración del pipeline azd con la inicialización adecuada
Asegúrese de ejecutar azd pipeline config --provider azdo después de ejecutar localmente azd init correctamente. Este comando debe configurar la canalización con la configuración correcta que controla la inicialización automáticamente.
Si sigue experimentando problemas, compruebe que:
- La estructura del proyecto coincide con lo que
azdespera para Aspire proyectos. - Está ejecutando los comandos desde el directorio correcto (normalmente donde se encuentra el
.slnarchivo). - La Azure conexión del servicio DevOps tiene los permisos necesarios para aprovisionar recursos.
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.