Estrategia CI/CD para implementar personalizaciones

La solución de Elasticsearch HCL Commerce Search no dicta el repositorio de datos ni los scripts necesarios para automatizar una canalización de Integración continua/Entrega continua (CI/CD). Tiene la posibilidad de utilizar su propio repositorio de datos y la estructura de compilación que desee. Los temas siguientes describen un enfoque recomendado que incluye una estructura de canalización de datos sugerida.

Una canalización de CI/CD debería permitirle automatizar muchos procesos o la mayor parte del proceso de implementación de los cambios en sus personalizaciones. Para ello, la canalización requiere una estructura de datos coherente que se pueda pasar de una etapa a otra, y se presupone que estas etapas se repiten en una secuencia predecible. Aunque puede implementar una canalización de este tipo de acuerdo con sus propias necesidades, a continuación le describimos un conjunto recomendado de etapas y las estructuras de datos asociadas.

Etapas de la canalización CI/CD

Aunque puede construir una canalización de CI/CD de muchas maneras, un enfoque útil para las personalizaciones HCL Commerce Search implica los pasos siguientes.

Codificar una estructura de paquetes de datos estándar para sus personalizaciones
Para automatizar la entrega de las personalizaciones, asegúrese de almacenar de forma coherente los cambios en las siguientes opciones:
  • Configuraciones personalizadas,
  • código de lógica personalizado y
  • búsquedas de códigos de versiones y parches.
Cuando envía cambios a la canalización CI/CD, cada una de sus etapas debe poder localizar todos los recursos necesarios para procesar los datos y pasarlos al paso siguiente. Por lo tanto, empezamos creando una estructura de paquete coherente para el código personalizado. Para obtener más información, consulte Ejemplo de estructura de archivos .sra para la automatización de CI/CD.
Personalizar el código
Personalizar la imagen de la aplicación de Ingest
Es probable que cambie o toque los recursos siguientes cuando personalice Ingest. Todos los archivos nuevos y actualizados de estas ubicaciones deben estar disponibles cuando vuelva a compilar el contenedor de Docker de Ingest. Para obtener detalles, consulte Personalización de la búsqueda de automatización de CI/CD.
  • El descriptor del conector personalizado, que se encuentra en /profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/commerce, y las propiedades del descriptor del conector (que se utilizan para alterar temporalmente las propiedades de canalización del conector predeterminadas), que se encuentran en /profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization. Para obtener una explicación sobre cómo organizar esta tarea para CI/CD, consulte Ejemplo: desplegar un conector para CI/CD. Puede utilizar el mismo proceso general para cada uno de los componentes siguientes.
  • Personalizaciones de flujo en el registro. Estas extensiones se actualizan cada cinco minutos en el directorio /opt/nifi-registry/flows/extensions.
    Note: Ingest sincroniza el lienzo de NiFi en cada inicio importando (nuevos) conectores personalizados y aplicando propiedades personalizadas.
Personalizar la imagen de la aplicación de consulta
Es probable que cambie o toque los recursos siguientes cuando personalice el servicio de consulta. Todos los archivos nuevos y actualizados de estas ubicaciones deben estar disponibles cuando vuelva a compilar el contenedor de Docker del servicio de consulta.
  • Configuraciones de Ingest (para atributos globales), que se pueden encontrar en el contenedor de consulta en /profile/apps/search-query.ear/search-query.war/WEB-INF/classes/ingest-configs.json.
  • El perfil de Ingest para el servicio de consulta. Puede encontrarse en el contenedor de consulta en /profile/apps/search-query.ear/search-query.war/WEB-INF/classes/profiles/ingest.
  • Manejadores de REST, que se encuentran en /profile/apps/search-query.ear/search-query.war/WEB-INF/classes.
  • Configuraciones de los componentes, que se encuentran en el archivo /profile/apps/search-query.ear/search-query.war/WEB-INF/classes/wc-component.json.
  • Perfiles de búsqueda personalizados, que están en /profile/apps/search-query.ear/search-query.war/WEB-INF/classes/profiles/, en los subdirectorios productview, categoryview o sitecontent.
  • Lógica de extensión personalizada del perfil de búsqueda (Java), que se encuentra en /profile/apps/search-query.ear/search-query.war/WEB-INF/classes.
  • Perfil NLP personalizado, que se encuentra de forma predeterminada en el archivo HCL_NLPProfile.json. Este archivo se encuentra en /profile/apps/search-query.ear/search-query.war/WEB-INF/classes/profiles/nlp.
  • Archivos Matchmaker, que se encuentran en los directorios /profile/apps/search-query.ear/search-query.war/WEB-INF/classes/colors(_locale).properties, ...units(_locale).properties y ...filter(_locale).properties.
Personalizar procesadores NiFi y flujos NiFi
Construya los nuevos procesadores de NiFi y los flujos NiFi utilizando las directrices de Creación de un grupo de procesos NiFi personalizado. Los recursos incluyen:
  • La extensión del perfil de Ingest (Java) para NiFi. Se puede encontrar en el contenedor de NiFi en /opt/nifi/nifi-current/extensions como un archivo NAR.
Aplicar las correcciones de servicio a las imágenes personalizadas
Asegúrese de que ha aplicado las correcciones de servicio más recientes. Esto incluye el despliegue de correcciones activas y las actualizaciones de imágenes. Las correcciones de parcheado automático implican recopilar los siguientes tipos de archivos del directorio /patches:
  • Ingest: código binario, descriptor del conector (Json).
  • Registro: flujo (carga dinámica a través del archivo o de la interfaz de usuario del registro).
  • Consulta: código binario, descriptor del perfil (Json).
Actualización de imágenes: Cuando NiFi está configurado para utilizar el almacenamiento de volúmenes permanentes, se necesita la siguiente secuencia de despliegue para permitir que la actualización del lienzo de NiFi se realice automáticamente.
  1. NiFi + registro + consulta
  2. NiFi + Ingest
    Note: Cuando utilice un volumen permanente, debe reiniciar el POD una vez más después de actualizarlo a una nueva imagen para completar la actualización automática del lienzo de NiFi.
Para obtener una lista actualizada de las correcciones disponibles, consulte Correcciones que se incluyen en las versiones de HCL Commerce.
Despliegue de imágenes personalizadas en los entornos de prueba
Asegúrese de probar todos los cambios antes de desplegarlos. Para obtener más información, consulte los temas Pruebas y depuración (en Personalización de perfiles de Ingest) y Registrar y solucionar problemas de los servicios de recopilación y consulta.
Envíe los cambios a un repositorio de códigos fuente.
Envíe el código a un repositorio de código fuente. Por ejemplo, Git. Consulte Ejemplo de estructura de archivos .sra para la automatización de CI/CD
Utilice una herramienta de scripts automatizada para extraer las imágenes del repositorio, compile nuevas imágenes de Docker y activarlas
Configurar el canal CI/CD utilizando la herramienta CI/CD, Jenkins. Cree e implemente los scripts de forma que la ejecución secuencial CI/CD extraiga el paquete de personalización del repositorio, cree nuevas imágenes de Docker y, a continuación, envíe las imágenes a un repositorio de Docker. Para obtener más información, consulte Automatización de la canalización de CI/CD.
Note: Puede utilizar cualquier otra herramienta de CI/CD para configurar e implementar el canal de CI/CD. Asegúrese de investigar antes de decidir qué herramienta de CI/CD desea implementar para facilitar la ejecución secuencial de CI/CD. Piense en qué herramienta CI/CD funciona mejor para su empresa.