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:
- Extraiga el código del repositorio de archivos.
- Cree el código fuente de los procesadores Java personalizados.
- 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.
- Cree un nuevo contenedor NiFi personalizado con una copia del archivo NAR.
- 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
- Coloque la imagen personalizada en el registro de Docker.
- 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:
- Extraiga el código del repositorio de archivos.
- Utilizando un Dockerfile, cree una imagen personalizada del contenedor del registro NiFi con los archivos JSON que contiene.
- Implemente la imagen personalizada del registro NiFi.
- 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.
- 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
-
- Extraiga el código del repositorio de archivos.
- 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.