Flujos de trabajo de integración continua y entrega continua de DevOps para LUIS

Importante

LUIS se retirará el 1 de octubre de 2025. Además, a partir del 1 de abril de 2023, ya no se podrán crear recursos de este servicio. Se recomienda migrar las aplicaciones de LUIS al reconocimiento del lenguaje conversacional para aprovechar el soporte continuo del producto y las capacidades multilingües.

Los ingenieros de software que desarrollan una aplicación de Language Understanding (LUIS) pueden aplicar prácticas de DevOps en torno al control de código fuente, las compilaciones automatizadas, las pruebas y la administración de versiones. En este artículo se describen conceptos sobre la implementación de compilaciones automatizadas para LUIS.

Creación de flujos de trabajo de automatización para LUIS

CI workflows

En su sistema de administración de código fuente (SCM), configure las canalizaciones de compilaciones automatizadas para que se ejecuten en los siguientes eventos:

  1. Desencadenamiento de un flujo de trabajo de PR al generar una solicitud de incorporación de cambios (PR). Este flujo de trabajo valida el contenido de la PR antes de que las actualizaciones se combinen en la rama principal.
  2. Desencadenamiento del flujo de trabajo de CI/CD al insertar las actualizaciones en la rama principal; por ejemplo, al combinar los cambios de una PR. Este flujo de trabajo garantiza la calidad de todas las actualizaciones de la rama principal.

El flujo de trabajo de CI/CD combina dos procesos de desarrollo complementarios:

  • La integración continua (CI) es la práctica de ingeniería que consiste en confirmar con frecuencia el código en un repositorio compartido y realizar una compilación automatizada con él. Junto con un enfoque de pruebas automatizado, la integración continua nos permite comprobar que, para cada actualización, el origen de LUDown siga siendo válido y se pueda importar a una aplicación de LUIS, y también que pase un grupo de pruebas que comprueben que la aplicación entrenada pueda reconocer las intenciones y las entidades necesarias para la solución.

  • La entrega continua (CD) va más allá de la integración continua, ya que implementa la aplicación automáticamente en un entorno en el que es posible realizar pruebas más exhaustivas. La CD nos permite saber con anticipación si se ha producido algún imprevisto a raíz de los cambios lo más rápidamente posible. También nos permite obtener información sobre las deficiencias de nuestra cobertura de pruebas.

El objetivo de la integración continua y entrega continua es garantizar que el "elemento principal siempre se pueda enviar". En el caso de una aplicación de LUIS, esto significa que podríamos tomar cualquier versión de la aplicación de LUIS de la rama principal y enviarla a producción si es necesario.

Herramientas para crear flujos de trabajo de automatización para LUIS

Sugerencia

En el repositorio de plantillas de LUIS DevOps puede encontrar una solución completa para implementar DevOps.

Hay diferentes tecnologías de automatización de compilaciones disponibles para crear flujos de trabajo de automatización de compilaciones. Todas ellas requieren que se puedan crear scripts para los pasos mediante una interfaz de línea de comandos (CLI) o llamadas de REST para que puedan ejecutarse en un servidor de compilación.

Use las siguientes herramientas para crear flujos de trabajo de automatización para LUIS:

Flujo de trabajo de PR

Tal y como hemos mencionado, configure este flujo de trabajo para que se ejecute cuando un desarrollador genere una PR para proponer la combinación de los cambios de una rama de características con la principal. Su finalidad es comprobar la calidad de los cambios en la PR antes de combinarlos en la rama principal.

Este flujo de trabajo debe realizar lo siguiente:

  • Crear una aplicación de LUIS temporal importando el origen de .lu en la PR.
  • Entrenar la versión de la aplicación de LUIS y publicarla.
  • Ejecutar en esta todas las pruebas unitarias.
  • Pasar el flujo de trabajo si se superan todas las pruebas; de lo contrario, deberá generarse un error.
  • Limpiar y eliminar la aplicación temporal.

Si el Administrador de control de servicios lo admite, configure las reglas de protección de ramas para que este flujo de trabajo se complete correctamente antes de que se pueda completar la PR.

Flujo de trabajo de CI/CD de la rama principal

Configure este flujo de trabajo para que se ejecute una vez que las actualizaciones de la PR se hayan combinado en la rama principal. Su finalidad es mantener alto el nivel de calidad de la rama principal mediante pruebas en las actualizaciones. Si las actualizaciones cumplen el nivel de calidad, este flujo de trabajo implementará la nueva versión de la aplicación de LUIS en un entorno en el que podrá realizar pruebas más exhaustivas.

Este flujo de trabajo debe realizar lo siguiente:

  • Crear una nueva versión en la aplicación de LUIS principal (la aplicación que mantiene para la rama principal) con el código fuente actualizado.

  • Entrenar la versión de la aplicación de LUIS y publicarla.

    Nota

    Como se explica en Ejecución de pruebas en un flujo de trabajo de compilación automatizada, debe publicar la versión de la aplicación de LUIS en fase de prueba para que herramientas como NLU.DevOps puedan acceder a ella. LUIS solo admite dos ranuras de publicación con nombre, almacenamiento provisional y producción para una aplicación de LUIS, pero también puede publicar una versión directamente y consultar por versión. Use la publicación de versiones directa en los flujos de trabajo de automatización para evitar verse limitado al uso de los espacios de publicación con nombre.

  • Ejecute todas las pruebas unitarias.

  • Si quiere, ejecute pruebas por lotes para medir la calidad y la precisión de la versión de la aplicación de LUIS y compararla con alguna línea de base.

  • Si las pruebas se completan correctamente:

    • Etiquete el origen en el repositorio.
    • Ejecute el trabajo de entrega continua (CD) para implementar la versión de la aplicación de LUIS en entornos para realizar más pruebas.

Entrega continua (CD)

El trabajo de CD en un flujo de trabajo de CI/CD se ejecuta de manera condicional en la realización correcta de la compilación y las pruebas unitarias automatizadas. Su trabajo consiste en implementar automáticamente la aplicación de LUIS en un entorno en el que pueda realizar más pruebas.

No hay ninguna solución que se recomiende más que otra para la implementación de la aplicación de LUIS. Además, deberá implementar el proceso adecuado para su proyecto. El repositorio de plantillas de DevOps para LUIS implementa una solución sencilla para esto, que consiste en la publicación de la nueva versión de la aplicación de LUIS en el espacio de publicación producción. Esto es adecuado para una configuración simple. Sin embargo, si necesita admitir varios entornos de producción diferentes al mismo tiempo, como desarrollo, almacenamiento provisional y Pruebas de aceptación de usuario, el límite de dos espacios de publicación con nombre por aplicación no será suficiente.

Otras opciones para implementar una versión de la aplicación son las siguientes:

  • Dejar la versión de la aplicación publicada en el punto de conexión de la versión directa e implementar un proceso para configurar los entornos de producción de nivel inferior con el punto de conexión de la versión directa según sea necesario.
  • Mantener diferentes aplicaciones de LUIS para cada entorno de producción y escribir los pasos de automatización para importar el elemento .lu a una nueva versión de la aplicación de LUIS para el entorno de producción de destino, para entrenarlo y publicarlo.
  • Exportar la versión de la aplicación de LUIS comprobada a un contenedor de Docker de LUIS e implementar el contenedor de LUIS en Azure Container Instances.

Administración de versiones

Por lo general, se recomienda realizar la entrega continua solo a los entornos que no sean de producción, como los de desarrollo y almacenamiento provisional. La mayoría de los equipos requieren un proceso de revisión y aprobación manual para implementarse un entorno de producción. En el caso de una implementación de producción, quizá quiera asegurarse de que se produce cuando las personas clave del equipo de desarrollo están disponibles para dar soporte técnico, o durante períodos de tráfico bajo.

Aplicación de DevOps al desarrollo de aplicaciones de LUIS mediante Acciones de GitHub

Vaya al repositorio de plantillas de DevOps para LUIS, donde obtendrá una solución completa que implementará los procedimientos recomendados de ingeniería de software y DevOps para LUIS. Este repositorio de plantillas se puede usar para crear un propio repositorio con compatibilidad integrada con los flujos de trabajo y procedimientos de CI/CD que habilitan el control de código fuente, las compilaciones automatizadas, las pruebas y la administración de versiones con LUIS para su propio proyecto.

En el repositorio de plantillas de DevOps para LUIS se explican los procedimientos para realizar lo siguiente:

Pasos siguientes