Automatización de la canalización de CI/CD

En la etapa final de la canalización de CI/CD, empaquete e despliegue las personalizaciones mediante una herramienta de automatización de scripts. Hay varias herramientas disponibles para ello; en este ejemplo utilizamos Jenkins.

Compilación de un archivo de Jenkins para automatizar procesos

El Jenkinsfile establece la secuencia de ejecución del proceso de compilación. Incluye las siguientes etapas y pasos:
Note: Puede omitir una etapa si no tiene personalizaciones para dicha etapa.
Etapa 1: Empaquetar y desplegar procesadores NiFi personalizados
Esta etapa consta de los pasos siguientes:
  1. Extraiga el código del repositorio de archivos.
  2. Cree el código fuente de los procesadores Java personalizados.
  3. Empaquete el código del procesador Java personalizado en un archivo .nar. Con la ayuda de tu herramienta de automatización de la construcción preferida, como el plugin Jenkins+Maven, crea un script que llame a los destinos pom.xml que construirán y empaquetarán el códCree un nuevo contenedor NiFi personalizado con una copia del archivo NAR.igo en un archivo .NAR.
  4. Cree un nuevo contenedor NiFi personalizado con una copia del archivo NAR.
  5. Cree una imagen personalizada del archivo .nar que debe copiarse en el contenedor docker NIFI, utilizando una Dockerfile,
    COPY commerce-custom-search-bundles.nar /opt/nifi/nifi-current/extensions/commerce-custom-search-bundles.nar
  6. Coloque la imagen personalizada en el registro de Docker.
  7. Implemente y ejecute la nueva imagen NiFi personalizada para ver el procesador disponible desde la interfaz de usuario de NIFI.
Etapa 2: Empaquetar y desplegar grupos de procesos NiFi personalizados
Esta etapa consta de los pasos siguientes:
  1. Extraiga el código del repositorio de archivos.
  2. Utilizando un Dockerfile, cree una imagen personalizada del contenedor del registro NiFi con los archivos JSON que contiene.
  3. Implemente la imagen personalizada del registro NiFi.
  4. Inicie la imagen personalizada del registro NiFi.
    Note: No es necesario crear un nuevo registro NiFi. También puede implementar un registro NiFi separado personalizado que contiene el grupo de procesos personalizado.
  5. En el mismo Dockerfile utilizado en el paso 2, incluya la utilidad import_flow.sh para importar los grupos de procesos. Consulte Importar los conectores al registro de tiempo de ejecución
Etapa 3: Empaquetar y desplegar conectores de Ingest
  1. Extraiga el código del repositorio de archivos.
  2. Con el siguiente comando Curl, cargue el archivo JSON de definición del conector modificado en el contenedor Ingest para persistir el descriptor en ZooKeeper.
    post /connector/<*CONNECTOR_NAME*>/upgrade/

    Ejemplo: este es un ejemplo de actualización de la conexión mediante el comando Curl:

    curl -X POST "http://v91tk.hclcdev.com:30800/connectors/someid.sample/upgrade" -H "accept: */*" -H "Content-Type: application/json" -d "{\"id\":\"string\",\"name\":\"string\",\"description\":\"string\",\"environment\":[\"string\"],\"created\":\"string\",\"modified\":\"string\",\"schedule\":{\"enabled\":true,\"startDate\":\"string\",\"endDate\":\"string\",\"startTime\":\"string\",\"everyInterval\":\"string\"},\"pipes\":[{\"name\":\"string\",\"label\":\"string\",\"version\":0,\"properties\":[{\"name\":\"string\",\"value\":\"string\",\"scope\":{\"name\":\"string\",\"sourceName\":\"string\",\"destinationName\":\"string\",\"type\":\"CONTROLLER_SERVICE\"}}]}],\"schemas\":[{\"name\":\"string\",\"schema\":{}}]}"
Personalizar las propiedades y la configuración de los componentes por defecto/existentes (actualización)
Realice cambios de propiedades y configuración en los grupos de procesos, procesadores, conexiones y servicios responsables. Para realizar estos cambios, coloque el archivo JSON del descriptor de actualización en la carpeta de montaje de volumen especificada (/profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization). En función de esto, la API de servicio Ingest de búsqueda ejecuta automáticamente la API de actualización con este JSON del descriptor de actualización proporcionado para personalizar las propiedades y la configuración de los conectores de Ingest predeterminados.