Implementación continua en Azure App Service

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

Nota

La página Centro de desarrollo (clásico) de Azure Portal, una versión anterior de la funcionalidad de implementación, quedó en desuso en marzo de 2021. Este cambio no afecta a ninguna configuración de implementación existente en la aplicación, y puede continuar con la administración de la implementación de aplicaciones desde la página Centro de implementación del portal.

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, *.csproj o default.aspx
ASP.NET Core *.sln o *.csproj
PHP index.php
Ruby (solo Linux) Gemfile
Node.js server.js, app.js o package.json con un script de inicio
Python *.py, requirements.txt o 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:

    Screenshot that shows how to choose the deployment source.

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 (Kudu) >Aceptar.

    Nota

    Para usar Azure Pipelines como proveedor de compilación para la aplicación de App Service, configure CI/CD directamente desde Azure Pipelines. No lo configure en App Service. La opción Azure Pipelines simplemente apunta a la dirección correcta.

  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 su cuenta de Azure con GitHub, seleccione la organización, el repositorio y la rama para configurar CI/CD. 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. Cuando se seleccione Acciones de GitHub como proveedor de compilación, puede seleccionar el archivo de flujo de trabajo que quiera con las listas desplegables Pila en tiempo de ejecución y Versión. Azure confirma este archivo de flujo de trabajo en el repositorio de GitHub seleccionado para controlar las tareas de compilación e implementación. Para ver el archivo antes de guardar los cambios, seleccione Previsualizar archivo.

    Nota

    App Service detecta la configuración de la pila de lenguaje de la aplicación y selecciona la plantilla de flujo de trabajo más adecuada. Si elige otra plantilla, esta podría implementar una aplicación que no se ejecute correctamente. Para más información, consulte Cómo funciona el proveedor de compilación de Acciones de GitHub.

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

    Screenshot that shows how to disconnect your cloud folder sync with your App Service app in the Azure portal.

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

  4. Seleccione Aceptar.

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

Cómo funciona el proveedor de compilación de Acciones de GitHub

El proveedor de compilación de Acciones de GitHub es una opción para CI/CD de GitHub, y completa estas acciones para configurar CI/CD:

  • Deposita un archivo de flujo de trabajo de Acciones de GitHub en el repositorio de GitHub para controlar las tareas de compilación e implementación en App Service.
  • Agrega el perfil de publicación de la aplicación como secreto de GitHub. El archivo de flujo de trabajo usa este secreto para autenticarse con App Service.
  • Captura la información de los registros de ejecución del flujo de trabajo y la muestra en la pestaña Registros del Centro de implementación de la aplicación.

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 usar un perfil de publicación, implemente con una entidad de servicio en Azure Active Directory.

Autenticación mediante una entidad de servicio

Esta configuración opcional reemplaza la autenticación predeterminada por los perfiles de publicación en el archivo de flujo de trabajo generado.

  1. Genere una entidad de servicio mediante el comando az ad sp create-for-rbac de la CLI de Azure. En el ejemplo siguiente, reemplace <subscription-id>, <group-name> y <app-name > por sus propios valores:

    az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                                --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                                --sdk-auth
    

    Importante

    Por seguridad, conceda el acceso mínimo necesario a la entidad de servicio. El ámbito del ejemplo anterior se limita a la aplicación específica de App Service y no a todo el grupo de recursos.

  2. Guarde la salida JSON completa para el paso siguiente, incluido {} de nivel superior.

  3. En su repositorio en GitHub, seleccione Configuración>Secretos>Agregar un nuevo secreto.

  4. Pegue la salida JSON completa del comando de la CLI de Azure en el campo de valor del secreto. Asigne un nombre al secreto, como AZURE_CREDENTIALS.

  5. En el archivo de flujo de trabajo generado por el Centro de implementación, revise el paso de azure/webapps-deploy para que se vea como en el ejemplo siguiente (que se ha modificado desde un archivo de flujo de trabajo de Node.js):

    - name: Sign in to Azure 
    # Use the GitHub secret you added.
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: Deploy to Azure Web App
    # Remove publish-profile.
    - uses: azure/webapps-deploy@v2
      with:
        app-name: '<app-name>'
        slot-name: 'production'
        package: .
    - name: Sign out of Azure.
      run: |
        az logout
    

Implementación desde otros repositorios

En el caso de las aplicaciones de Windows, puede configurar manualmente la implementación continua desde un repositorio GIT o de Mercurial en la nube que el portal no admite directamente, por ejemplo, GitLab. Para ello, seleccione Git externo en la lista desplegable Origen. Para obtener más información, consulte Configuración de la implementación continua mediante pasos manuales.

Más recursos