Implementación continua para Azure Functions

Azure Functions te permite desplegar continuamente cambios desde un repositorio de control de versiones a una aplicación de funciones. En este flujo de trabajo, una actualización de código activa la compilación, empaquetado y despliegue de tu proyecto a Azure. Los proveedores de despliegue soportados y las estrategias de lanzamiento dependen del plan de alojamiento.

Plan de hospedaje Proveedor recomendado de CI/CD Guía de despliegue y lanzamiento
Flex Consumption Acciones de GitHub o Azure Pipelines Utiliza el despliegue de paquetes. No se soportan ranuras de despliegue. Utiliza los controles de lanzamiento de CI/CD y considera actualizaciones progresivas para despliegues sin tiempo de inactividad.
Elastic Premium, Dedicado y Consumo Acciones de GitHub o Azure Pipelines Utiliza el despliegue ZIP. Si tu aplicación lo admite, implementa en un slot de preproducción, valida la actualización y luego intercambia el slot con el de producción.
Azure Container Apps (Aplicaciones de Contenedores de Azure) Flujo de trabajo de construcción y despliegue de contenedores Despliega una imagen de contenedor. Para más información, consulte Introducción a Azure Functions en Azure Container Apps.

Selecciona tu plan de alojamiento al principio de este artículo para ver la guía de despliegue continuo que se aplica a tu aplicación funcional.

Para los planes de alojamiento que admitan ranuras de implementación, configura la implementación continua para una ranura de ensayo en lugar de la ranura de producción. Verifica las actualizaciones en el entorno de ensayo y luego intercambia el slot de ensayo con el de producción. Si te conectas directamente a una ranura de producción, asegúrate de que solo el código de calidad de producción llegue a la rama integrada.

Para el consumo flexible, configura Acciones de GitHub o Azure Pipelines. Como Flex Consumption no soporta ranuras de despliegue, conserva tu historial de despliegue en control de versiones y tu sistema CI/CD para poder recuperarte de un mal despliegue.

Para Funciones en Azure Container Apps, construye y despliega una imagen de contenedor. No hay plazas de despliegue disponibles. Utilice revisiones y considere una estrategia de implementación azul-verde para lanzamientos sin inactividad.

Los pasos del Centro de implementación de este artículo son aplicables a las aplicaciones de funciones que admiten la integración del control de código fuente de App Service. En el plan Consumo, esta integración solo es compatible con Windows. También puedes configurar la integración con control de versiones usando CLI de Azure.

Azure Functions admite estos orígenes para la implementación continua en tu aplicación:

Mantenga el código del proyecto en Azure Repos, uno de los servicios de Azure DevOps. Admite el Control de versiones de Team Foundation y Git. Se usa con el proveedor de compilación de Azure Pipelines. Para más información, consulte ¿Qué es Azure Repos?

También puedes conectar tu app de funciones a un repositorio externo de Git, pero esta opción requiere sincronización manual. Para más información sobre las opciones de implementación, consulte Tecnologías de implementación en Azure Functions.

Nota:

Las opciones de implementación continua que se tratan en este artículo son específicas de las implementaciones de solo código. Para Azure Functions en Azure Container Apps, consulte la introducción a Azure Functions en Azure Container Apps. Para un contenedor personalizado alojado por Azure Functions en un plan Premium o Dedicado, consulte la sección Habilitar el despliegue continuo de contenedores en Azure en Trabajar con contenedores y Azure Functions.

Flex Consumption soporta el despliegue continuo desde Azure Repos usando Azure Pipelines y desde GitHub usando Acciones de GitHub. La integración del control de código fuente de App Service, incluidas las implementaciones desde Bitbucket y Local Git, no está admitida.

Para funciones en Azure Container Apps, mantén tu código fuente en tu repositorio preferido y usa un flujo de trabajo CI/CD para construir y enviar una imagen de contenedor. Luego actualiza tu app de funciones para usar la nueva imagen. Para más información, consulte Despliegue y configuración para Funciones en Azure Container Apps.

Requisitos

La unidad de implementación de las funciones en Azure es la aplicación de funciones. Para que la implementación continua se realice correctamente, la estructura de directorios del proyecto debe ser compatible con la estructura de carpetas básica que espera Azure Functions. Cuando creas tu proyecto de código usando Azure Functions Core Tools, Visual Studio Code o Visual Studio, las plantillas de Azure Functions crean proyectos de código con la estructura de directorios correcta. Despliegas todas las funciones en una app de funciones al mismo tiempo y en el mismo paquete.

Después de habilitar el despliegue continuo, el acceso al código de función en el portal de Azure se configura como solo lectura porque la fuente de verdad reside en otro lugar.

Nota:

El Centro de implementación no admite la habilitación de la implementación continua para una aplicación de funciones con restricciones de red entrantes. En su lugar, configura el flujo de trabajo del proveedor de compilación directamente en GitHub o Azure Pipelines. El runner o agente debe poder acceder al endpoint de despliegue de la app bajo las restricciones de acceso configuradas. Cuando el endpoint es privado, el runner o agente también necesita resolución DNS privada. Para Azure Pipelines, utiliza un agente autoalojado en una red conectada o un pool de agentes DevOps gestionados con red. Para Acciones de GitHub, utiliza un runner autoalojado en una red conectada o un runner alojado en GitHub con red privada de Azure.

Cuando tu app de función tiene restricciones de red entrante, el ejecutor o agente del flujo de trabajo debe poder acceder al endpoint de despliegue de la app bajo las restricciones de acceso configuradas. Cuando el endpoint es privado, el runner o agente también necesita resolución DNS privada. Para Azure Pipelines, utiliza un agente autoalojado en una red conectada o un pool de agentes DevOps gestionados con red. Para Acciones de GitHub, utiliza un runner autoalojado en una red conectada o un runner alojado en GitHub con red privada de Azure.

Tu flujo de trabajo CI/CD debe construir una imagen válida de contenedor de Azure Functions, enviar la imagen a un registro al que pueda acceder tu aplicación de contenedores y actualizar la aplicación de funciones para crear una revisión a partir de esa imagen. Para más información, consulta Crear una aplicación de función en Azure Container Apps.

Selección de un proveedor de compilación

La compilación del proyecto de código forma parte del proceso de implementación. El proceso de compilación específico depende de la pila de lenguajes, el sistema operativo y el plan de hospedaje específicos. Puedes construir local o remotamente, dependiendo de tu alojamiento. Para obtener más información, consulte Compilación remota.

Importante

Para mayor seguridad, utiliza un proveedor de compilación que soporte identidades gestionadas, como Azure Pipelines y Acciones de GitHub. El servicio de compilación del servicio de aplicaciones requiere que actives la autenticación básica y uses credenciales basadas en texto.

Azure Functions admite estos proveedores de compilación:

Azure Pipelines es uno de los servicios de Azure DevOps y el proveedor de compilación predeterminado para los proyectos de Azure Repos. También puede usar Azure Pipelines para compilar proyectos desde GitHub. En Azure Pipelines, hay una AzureFunctionApp tarea diseñada específicamente para la implementación en Azure Functions. Esta tarea le proporciona control sobre cómo se compila, empaqueta e implementa el proyecto. Azure Pipelines admite identidades administradas.

Tenga en cuenta las ventajas y limitaciones de estos proveedores al habilitar la integración del control de código fuente. Es posible que tenga que cambiar el tipo de origen del repositorio para aprovechar las ventajas de un proveedor específico.

Usa Azure Pipelines o Acciones de GitHub para construir y desplegar tu proyecto. Estos proveedores soportan identidades Microsoft Entra y utilizan el proceso de despliegue del paquete Flex Consumption.

El servicio de construcción de servicios de aplicaciones no se aplica a Flex Consumption.

Utiliza un proveedor de compilación de contenedores que pueda crear tu imagen de Azure Functions, enviarla a un registro de contenedores y actualizar tu aplicación de funciones para crear una revisión a partir de la nueva imagen. Para un flujo de trabajo de Acciones de GitHub de extremo a extremo, consulta Desplegar en Azure Container Apps con Acciones de GitHub.

Configuración de la implementación continua

El portal de Azure ofrece un Centro de Despliegue para tus aplicaciones funcionales, lo que facilita configurar el despliegue continuo. La forma específica de configurar la implementación continua depende tanto del tipo de repositorio de control de código fuente en el que reside el código como del proveedor de compilación que elija.

En el Azure portal, navegue a la página de la aplicación de funciones y seleccione Centro de implementación en la sección de Implementación del panel izquierdo.

Captura de pantalla del Centro de Despliegue de la app de funciones en el portal de Azure donde eliges tu repositorio fuente.

Seleccione el tipo de repositorio Origen en el que se mantenga el código del proyecto desde una de estas opciones admitidas:

Defina implementaciones desde Azure Repos que usan Azure Pipelines en el portal de Azure DevOps. No definas estos despliegues a partir de tu aplicación de funciones. Para una guía paso a paso sobre cómo crear un despliegue basado en Azure Pipelines desde Azure Repos, consulte Continuous delivery with Azure Pipelines.

Una vez finalizada la implantación, el servicio despliega todo el código desde la fuente especificada a tu aplicación. Hecho esto, los cambios en el origen de implementación desencadenarán una implementación de dichos cambios en la aplicación de funciones en Azure.

Configura el despliegue continuo en tu repositorio utilizando uno de estos proveedores:

Cada ejecución exitosa de flujo de trabajo despliega un nuevo paquete de aplicación. La integración del control de código fuente del Centro de implementación no está disponible para Flex Consumption.

Configura tu flujo de trabajo CI/CD para construir y enviar la imagen del contenedor, y luego desplega la imagen en tu aplicación de funciones. Cada actualización de una imagen crea una revisión de Container Apps. Para más información, consulta Desplegar en Azure Container Apps con Acciones de GitHub.

Habilitar la implementación continua durante la creación de aplicaciones

Cuando creas una aplicación de funciones en el portal de Azure, puedes configurar el despliegue continuo desde GitHub usando Acciones de GitHub. Configura Acciones de GitHub en la pestaña de Despliegue de la página Crear Función App.

Para usar un código fuente de despliegue o proveedor de compilación diferente para una integración continua, primero crea tu aplicación de función. Luego vuelve al portal y configura la integración continua en el Centro de Despliegue.

Para Azure Pipelines, primero crea tu aplicación de funciones y luego configura la tubería en Azure DevOps.

Crea la aplicación de funciones a partir de una imagen de contenedor y, a continuación, configura tu flujo de trabajo de CI/CD para publicar imágenes actualizadas y crear revisiones. Para más información, consulta Crear una aplicación de función en Azure Container Apps.

Habilitación de la autenticación básica para implementaciones

Esta sección se aplica únicamente a métodos de despliegue que utilizan el endpoint de despliegue de App Service.

En algunos casos, tu aplicación de funciones se crea con el acceso mediante autenticación básica al punto de conexión de implementación deshabilitado. Esta condición bloquea la publicación por todos los métodos que no pueden usar identidades de Microsoft Entra para acceder al endpoint de despliegue. Las repercusiones en la publicación de deshabilitar la autenticación básica para el punto de conexión de implementación se detallan en Implementar sin autenticación básica.

Importante

Cuando se usa la autenticación básica, las credenciales se envían en texto no cifrado. Para proteger estas credenciales, solo debes acceder al punto final de despliegue a través de una conexión cifrada (HTTPS) cuando uses autenticación básica. Para obtener más información, vea implementación segura.

Para habilitar la autenticación básica para el endpoint de despliegue:

  1. En Azure Portal, vaya a la aplicación de funciones.

  2. En el menú de la izquierda de la aplicación, seleccione Configuración>Configuración>Ajustes generales.

  3. Establezca Credenciales de publicación de autenticación básica de SCM en Activado y, a continuación, seleccione Guardar.

La autenticación básica SCM no se aplica a los despliegues de paquetes Flex Consumption. Por defecto, Azure Pipelines utiliza un token portador Microsoft Entra desde su conexión de servicio Azure requerida; se recomienda la federación de identidad de carga de trabajo. Para Acciones de GitHub, utiliza la autenticación recomendada de OpenID Connect (OIDC). Estos métodos evitan la publicación de credenciales SCM y son más seguros que la autenticación básica.

Esta configuración básica de autenticación no se aplica a las Funciones en Azure Container Apps. Configura la autenticación entre tu proveedor de CI/CD, registro de contenedores y aplicación de contenedores en su lugar.

Pasos siguientes