Compartir vía


Implementación continua en Azure App Service

Nota:

A partir del 1 de junio de 2024, todas las aplicaciones de App Service recién creadas tendrán la opción de generar un nombre de host predeterminado único mediante la convención de nomenclatura <app-name>-<random-hash>.<region>.azurewebsites.net. Los nombres de aplicación existentes permanecerán sin cambios.

Ejemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Para más información, consulte Nombre de host predeterminado único para el recurso App Service.

Azure App Service le permite realizar implementaciones continuas desde los repositorios de GitHub, Bitbucket y Azure Repos al incorporar las últimas actualizaciones.

Preparación del repositorio

Para obtener compilaciones automáticas del servidor de compilación de Azure App Service, asegúrese de que la raíz del repositorio tenga los archivos correctos del proyecto.

Tiempo de ejecución Archivos del directorio raíz
ASP.NET (solo Windows) *.sln, *.csprojo default.aspx
ASP.NET Core *.sln o *.csproj
PHP index.php
Ruby (solo Linux) Gemfile
Node.js server.js, app.jso package.json con un script de inicio
Python *.py, requirements.txto runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html o iisstart.htm
Trabajos web <job_name>/run.<extension> en App_Data/jobs/continuous para WebJobs continuos o App_Data/jobs/triggered para WebJobs desencadenados. Para más información, consulte la documentación de WebJobs de Kudu.
Functions Consulte Implementación continua para Azure Functions.

Para personalizar la implementación, puede incluir un archivo .deployment en la raíz del repositorio. Para más información, consulte el artículo sobre la personalización de las implementaciones y el artículo sobre el script de implementación personalizado.

Nota

Si usa Visual Studio, deje que Visual Studio cree un repositorio automáticamente. El proyecto está listo inmediatamente para su implementación por medio de Git.

Configuración del origen de implementación

  1. En Azure Portal, vaya a la página de administración de la aplicación de App Service.

  2. En el panel izquierdo, seleccione Centro de implementación. Luego, seleccione Configuración.

  3. En el cuadro Origen, seleccione una de las opciones de CI/CD:

    Captura de pantalla que muestra cómo elegir el origen de implementación.

Seleccione la pestaña correspondiente al proveedor de la compilación para continuar.

  1. Acciones de GitHub es el proveedor de compilación predeterminado. Para cambiar el proveedor, seleccione Cambiar proveedor>Servicio de compilación de App Service>Aceptar.

  2. Si va a realizar la implementación desde GitHub por primera vez, seleccione Autorizar y siga las indicaciones de autorización. Si quiere realizar la implementación desde un repositorio de usuario diferente, seleccione Cambiar cuenta.

  3. Después de autorizar la cuenta de Azure con GitHub, seleccione la organización, el repositorio y la rama que desee.

    Si no encuentra ningún repositorio u organización, es posible que tenga que habilitar más permisos en GitHub. Para más información, consulte Administración del acceso a los repositorios de la organización.

  4. En Tipo de autenticación, seleccione Identidad asignada por el usuario para mejorar la seguridad. Para más información, consultepreguntas más frecuentes.

    Nota:

    Si la cuenta de Azure tiene los permisos necesarios para la opción Identidad asignada por el usuario, Azure le creará una identidad administrada asignada por el usuario. Si no lo hace, trabaje con el administrador de Azure para crear una identidad con el rol necesario en la aplicación y, a continuación, selecciónelo aquí en la lista desplegable.

  5. (Opcional) Para ver el archivo antes de guardar los cambios, seleccione Previsualizar archivo. App Service selecciona una plantilla de flujo de trabajo basada en la configuración de pila de idioma de la aplicación y la confirma en el repositorio de GitHub seleccionado.

  6. Seleccione Guardar.

    Las nuevas confirmaciones del repositorio y la rama seleccionados ahora se implementan continuamente en su aplicación de App Service. Puede hacer el seguimiento de las confirmaciones y las implementaciones en la pestaña Registros.

Deshabilitación de la implementación continua

  1. En Azure Portal, vaya a la página de administración de la aplicación de App Service.

  2. En el panel izquierdo, seleccione Centro de implementación. A continuación, seleccione Configuración>Desconectar:

    Captura de pantalla que muestra cómo desconectar la sincronización de carpetas en la nube con la aplicación de App Service en Azure Portal.

  3. De manera predeterminada, el archivo de flujo de trabajo de Acciones de GitHub se conserva en el repositorio, pero sigue desencadenando la implementación en la aplicación. Para eliminar el archivo del repositorio, seleccione Eliminar archivo de flujo de trabajo.

  4. Seleccione Aceptar.

¿Cuáles son los proveedores de compilación?

En función del origen de implementación que tenga en el Centro de implementación, es posible que vea algunas opciones de proveedores de compilación para seleccionar. Los proveedores de compilación le ayudan a crear una solución de CI/CD con Azure App Service mediante la automatización de la compilación, la prueba y la implementación.

No está limitado a las opciones del proveedor de compilación que se encuentran en el Centro de implementación, pero App Service le permite configurarlas rápidamente y ofrece cierta experiencia de registro de implementación integrada.

El proveedor de compilación de Acciones de GitHub solo está disponible para la implementación de GitHub. Cuando se configura desde el Centro de implementación de la aplicación, completa estas acciones para configurar la CI/CD:

Puede personalizar el proveedor de compilación de Acciones de GitHub de estas maneras:

  • Personalice el archivo de flujo de trabajo después de que se genere en el repositorio de GitHub. Para más información, consulte Sintaxis de flujo de trabajo para Acciones de GitHub. Solo tiene que asegurarse de que el flujo de trabajo se implementa en App Service con la acción azure/webapps-deploy.
  • Si la rama seleccionada está protegida, todavía puede obtener una vista previa del archivo de flujo de trabajo sin guardar la configuración y, después, agregarla manualmente al repositorio. Este método no ofrece la integración de registros con Azure Portal.
  • En lugar de utilizar autenticación básica o una identidad asignada por el usuario, también puede realizar la implementación utilizando una entidad de servicio en Microsoft Entra ID. Esto no se puede configurar en el portal.

¿Qué ocurre con mi aplicación durante la implementación?

Todos los métodos de implementación admitidos oficialmente realizan cambios en los archivos de la carpeta /home/site/wwwroot de la aplicación. Estos archivos se usan para ejecutar la aplicación. Por tanto, se puede producir un error en la implementación debido a archivos bloqueados. Es posible que la aplicación también se comporte de forma impredecible durante la implementación porque no todos los archivos se hayan actualizado al mismo tiempo. Este comportamiento no es deseable en una aplicación orientada al cliente. Hay varias formas de evitar estos problemas:

Preguntas más frecuentes

¿Funciona el proveedor de compilación de Acciones de GitHub con la autenticación básica si está deshabilitada?

No. Pruebe a usar Acciones de GitHub con la opción identidad asignada por el usuario.

Para obtener más información, vea Implementación sin autenticación básica.

¿Qué hace la opción de identidad asignada por el usuario para Acciones de GitHub?

Al seleccionar la identidad asignada por el usuario en el origen de Acciones de GitHub, App Service configura todos los recursos necesarios en Azure y en GitHub para habilitar la autenticación de OpenID Connect recomendada con Acciones de GitHub.

En concreto, App Service realiza las siguientes operaciones:

  • Crea una credencial federada entre una identidad administrada asignada por el usuario en Azure y el repositorio y la rama seleccionados en GitHub.
  • Crea los secretos AZURE_CLIENT_ID, AZURE_TENANT_ID y AZURE_SUBSCRIPTION_ID a partir de la credencial federada en el repositorio de GitHub seleccionado.
  • Asigna la identidad a su aplicación.

En un flujo de trabajo de Acciones de GitHub en el repositorio de GitHub, puede usar la acción Azure/login para autenticarse con su aplicación mediante OpenID Connect. Por ejemplo, vea Adición del archivo de flujo de trabajo al repositorio de GitHub.

Si su cuenta de Azure tiene los permisos necesarios, App Service crea una identidad administrada asignada por el usuario y la configura automáticamente. Esta identidad no se muestra en la página Identidades de la aplicación. Si la cuenta de Azure no tiene los permisos necesarios, debe seleccionar una identidad existente con el rol necesario.

Por qué veo el error "No tiene permisos suficientes en esta aplicación para asignar acceso basado en roles a una identidad administrada y configurar credenciales federadas"?

El mensaje indica que la cuenta de Azure no tiene los permisos necesarios para crear una identidad administrada asignada por el usuario para Acciones de GitHub. Los permisos necesarios (con ámbito para la aplicación) son los siguientes:

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.ManagedIdentity/userAssignedIdentities/write

De manera predeterminada, el rol Administrador de acceso de usuario y el rol Propietario ya tienen este permiso, pero el rol Colaborador, no. Si no tiene los permisos necesarios, trabaje con el administrador de Azure para crear una identidad administrada asignada por el usuario con el rol Colaborador del sitio web. En el Centro de implementación, puede seleccionar la identidad en la lista desplegable GitHub>Identity.

Para obtener más información sobre los pasos alternativos, consulte Implementación en App Service mediante Acciones de GitHub.

¿Por qué veo el error "Esta identidad no tiene permisos de escritura en esta aplicación. Seleccione otra identidad o trabaje con el administrador para conceder el rol Colaborador del sitio web a su identidad en esta aplicación"?

El mensaje indica que la identidad administrada asignada por el usuario que se ha seleccionado no tiene el rol necesario para habilitar OpenID Connect entre el repositorio de GitHub y la aplicación de App Service. La identidad debe tener uno de los siguientes roles en la aplicación: Propietario, Colaborador o Colaborador de sitios web. El rol con privilegios mínimos que necesita la identidad es Colaborador de sitios web.

Más recursos