Este es el primero de una serie de artículos que dedicaremos a Jenkins en este blog: en este primer artículo explicaremos algunas de las características que han convertido a esta aplicación en una de las herramientas imprescindibles para el desarrollo, implantación y despliegue de aplicaciones informáticas. En posteriores artículos detallaremos cuál es el procedimiento para instalarlo y ponerlo en funcionamiento, así como algunos ejemplos concretos de uso de Jenkins en el desarrollo e instalación en diferentes entornos de módulos y aplicaciones para Odoo.

¿Qué es Jenkins?


Jenkins es una herramienta Open Source que permite una completa automatización de un proyecto desde los primeros pasos de su desarrollo hasta la finalización y puesta en producción de todas y cada una de las funcionalidades de dicho proyecto. 

Se trata de una herramienta multiplataforma desarrollada en Java y cuya filosofía es seguir la línea marcada por las nuevas metodologías de trabajo en proyectos IT y las nuevas tecnologías en servidores de automatización ya que facilita la integración continua (Continuous Integration) y la entrega continua (Continuous Delivery) de los trabajos realizados por el equipo del proyecto.

Continuous Integration (CI): Antes de integrar los cambios realizados en el código con nuestro programa principal, debemos cerciorarnos de que es testeado y verificado por los test de calidad y funcionalidad. De esta manera podemos asegurarnos de que nuestro programa principal funciona correctamente en cada actualización.

Continuous Delivery (CD): Este proceso se centra en lanzar los cambios a producción de manera mas automatizada que CI. Se enfoca en testear y liberar software de manera mas frecuente y de forma incremental en aplicaciones en producción.

Puedes encontrar más información acerca de cómo implantar un proceso CI/CD aquí.
Odoo • Text and Image

Al tratarse de una herramienta desarrollada en Java, es posible ejecutarla en cualquier distribución (Windows, MacOS y Unix) y, aunque dedicaremos un artículo a los pasos que deben seguirse para su correcta instalación en Linux, la web de Jenkins proporciona una guía que realmente permite una fácil instalación y configuración vía interfaz web. Tras su instalación, el Dashboard (panel de mando) inicial que mostrará Jenkins tiene el siguiente aspecto:

Odoo • A picture with a caption
Odoo • Image and Text
La pestaña 'All' muestra los trabajamos programados para su ejecución, de manera que en cada trabajo que se configure es posible apreciar el estado en el que han finalizado las ultimas ejecuciones:

- La columna "S"  (status) indica el status: en caso de que la última ejecución del trabajo haya sido exitosa se mostrará un punto de color azul, mientras que si la ejecución ha sido fallida el punto saldrá de color rojo.

- En la columna "W" (weather) muestra la tendencia de las ultimas 5 ejecuciones: si todas ellas han resultado exitosas, saldrá un sol mientras que si algunas de las últimas 5 no lo han sido, el icono cambiará.

La información completa sobre el funcionamiento y las características de Jenkins se encuentra realmente bien explicada en la documentación oficial que se encuentra en el siguiente enlace: https://jenkins.io/doc/

Plugins


Jenkins es extensible mediante un montón de plugins que están a disposición de los usuarios en su propio marketplace. Estos plugins permiten modificar ciertos comportamientos por defecto de la herramienta y también ofrecen funcionalidades extra que Jenkins no ofrece en su instalación base.

Uno de los plugins más destacados que podemos instalar es ‘Pipeline’. Un ‘pipeline’ (tubería) es un grupo de eventos o trabajos que se ejecutan uno tras otro en secuencia. Gracias a este plugin, podemos revisar el código de los trabjamos planificados por etapas y también nos permite conocer de una manera mucho más visual donde han surgido los problemas y/o errores.

Odoo • A picture with a caption
Así como ‘Pipeline’ incorpora unas capacidades visuales muy útiles en Jenkins, existen otro tipo de plugins que aportan funcionalidades muy diversas por ejemplo para:

- Almacenar credenciales (‘Credentials’)

- Gestión de agentes también conocidos como esclavos (‘SSH agents’)

- Monitorizar trabajos externos (‘Monitoring external jobs’)

- …
Odoo • Text and Image