Si deseas im­ple­me­n­tar el método de in­te­gra­ción continua (CI por sus siglas en inglés), deberías utilizar una he­rra­mie­n­ta de CI sencilla pero potente. Jenkins es buen ejemplo. Este software de código abierto ofrece, sobre todo, a través de plugins, una gran variedad de po­si­bi­li­da­des para diseñar un proceso de in­te­gra­ción continua más eficiente.

Jenkins está basado en Java y, por lo tanto, funciona en cualquier pla­ta­fo­r­ma. Dado que el software se su­mi­ni­s­tra junto con Winston —un servlet mi­d­d­le­wa­re— no requiere ningún servidor adicional, como por ejemplo Tomcat. Para que puedas trabajar de manera eficiente con Jenkins, este tutorial muestra en primer lugar cómo instalar y co­n­fi­gu­rar el programa e incluye un ejemplo de cómo dar los primeros pasos en un proyecto.

In­s­ta­la­ción del software

Jenkins está di­s­po­ni­ble en numerosas versiones. Puedes optar por la Weekly Version, para la que el software publica una ac­tua­li­za­ción a la semana o elegir la versión Long Term Dupport (LTS), en cuyo caso se publica una versión estable cada tres meses. Estas dos opciones te permiten a su vez elegir entre di­fe­re­n­tes la­n­za­mie­n­tos: además de los paquetes de in­s­ta­la­ción para los sistemas ope­ra­ti­vos ha­bi­tua­les (Windows, macOS, Ubuntu/Debian), también existe una versión para Docker así como para archivo web (.war).

Imagen: Vista general de las diferentes versiones disponibles para la instalación de Jenkins
Vista general de las di­fe­re­n­tes versiones di­s­po­ni­bles para la in­s­ta­la­ción de Jenkins
Nota

En nuestro ejemplo uti­li­za­mos Windows Installer en la versión 2.121.1 (LTS) para Windows 7. Si utilizas otra versión u otro sistema operativo, el proceso de co­n­fi­gu­ra­ción puede ser diferente. Dado que Jenkins está basado en Java, deberás tener instalada su versión actual.

Windows Installer te guía sin co­m­pli­ca­cio­nes a través de la in­s­ta­la­ción. Solo tienes que indicar el di­re­c­to­rio de in­s­ta­la­ción deseado y comenzar el proceso.

Co­n­fi­gu­ra­ción de Jenkins

La in­s­ta­la­ción solo debería durar unos segundos. De inmediato, el programa abre el navegador que tengas co­n­fi­gu­ra­do como estándar y accede a localhost:8080. Aquí se encuentra la interfaz web con la que puedes manejar Jenkins. Primero, sin embargo, tienes que acceder al archivo ini­tia­lA­d­mi­n­Pa­s­s­wo­rd di­s­po­ni­ble en el di­re­c­to­rio del software, en la carpeta Secrets. Este archivo, que se puede abrir con cualquier editor de textos, contiene una co­n­tra­se­ña generada por Jenkins. Copia la secuencia de ca­ra­c­te­res e in­sé­r­ta­los en el campo co­rre­s­po­n­die­n­te de la interfaz web.

Imagen: Solicitud de activación de la instalación de Jenkins
Solicitud de ac­ti­va­ción de la in­s­ta­la­ción de Jenkins
Imagen: Ejemplo de un código admin para Jenkins
Ejemplo de un código admin para Jenkins

Ahora puedes comenzar con la co­n­fi­gu­ra­ción de Jenkins. El asistente de co­n­fi­gu­ra­ción te co­n­su­l­ta­rá si deseas elegir los plugins o si prefieres utilizar una co­n­fi­gu­ra­ción estándar que ya cuente con todas las ex­te­n­sio­nes re­le­va­n­tes. Si utilizas Jenkins por primera vez, es muy probable que esta última opción sea la más adecuada. Además, si así lo deseas, más tarde podrás instalar plugins sin ningún problema.

Imagen: Instalación de los plugins estándares en Jenkins
In­s­ta­la­ción de los plugins es­tá­n­da­res en Jenkins

A co­n­ti­nua­ción, crea un primer usuario. Si al principio vas a trabajar solo en un proyecto, puedes saltarte este paso y utilizar Jenkins si­m­ple­me­n­te como ad­mi­ni­s­tra­dor (después podrás crear nuevos usuarios con di­fe­re­n­tes derechos en los ajustes del programa). El último paso de la co­n­fi­gu­ra­ción te permite in­tro­du­cir una URL de Jenkins. En el campo co­rre­s­po­n­die­n­te está indicado el localhost:8080. Si has instalado Jenkins en un servidor, lo que se re­co­mie­n­da es­pe­cia­l­me­n­te en un entorno pro­fe­sio­nal, introduce en este punto la ruta correcta al di­re­c­to­rio de Jenkins. Para terminar, almacena los datos in­tro­du­ci­dos y finaliza la co­n­fi­gu­ra­ción.

Consejo

Es posible realizar más ajustes a po­s­te­rio­ri en el menú de co­n­fi­gu­ra­ción de Jenkins.

Jenkins: in­tro­du­c­ción a su fu­n­cio­na­mie­n­to

Al principio, Jenkins presenta un entorno de trabajo co­m­ple­ta­me­n­te vacío. Para iniciar un proyecto de CI debes crear una nueva tarea, bien a través de la in­di­ca­ción resaltada en el centro de la ventana (“create new Jobs”) , bien a través de la opción de menú “New Item”, situado en la parte izquierda.

Imagen: Interfaz web de Jenkins
Interfaz web de Jenkins

En el siguiente paso debes dar una de­sig­na­ción al encargo y se­le­c­cio­nar qué se desea conseguir:

  • Proyecto de estilo libre: Jenkins conecta un sistema de gestión de versiones con sistema de build.
  • Pipeline: aquí se crea un cauce a través de varios agentes de co­m­pi­la­ción.
  • Proyecto mu­l­ti­co­n­fi­gu­ra­ción: si tienes un proyecto que requiere di­fe­re­n­tes po­si­bi­li­da­des de co­n­fi­gu­ra­ción, p. ej. porque utilizas diversos entornos de prueba, elije esta opción.
  • Carpeta: una carpeta es un co­n­te­ne­dor en el que puedes almacenar objetos anidados.
  • Or­ga­ni­za­ción GitHub: esta opción examina todos los re­po­si­to­rios de una cuenta en GitHub.
  • Mu­l­ti­bra­n­ch Pipeline: puedes crear di­re­c­ta­me­n­te varias ca­na­li­za­cio­nes.

Jenkins está enfocado pri­n­ci­pa­l­me­n­te a proyectos freestyle, por lo que en nuestro ejemplo también hemos creado uno de este tipo.

Imagen: Opciones de configuración para un proyecto en Jenkins
Opciones de co­n­fi­gu­ra­ción para un proyecto en Jenkins

En la siguiente página se muestran numerosas po­si­bi­li­da­des de co­n­fi­gu­ra­ción. El proyecto se configura en seis ca­te­go­rías. Su­po­n­ga­mos que estás es­cri­bie­n­do un programa en Java y deseas utilizar in­te­gra­ción continua. En primer lugar hay que ocuparse de la co­n­fi­gu­ra­ción del origen del código fuente. El programa de ejemplo se encuentra en un re­po­si­to­rio Git de tu terminal (si bien es posible conectar Jenkins, por ejemplo, con GitHub). Introduce, por tanto, el nombre de dicho di­re­c­to­rio en la opción “Git”. También puedes trabajar con una su­b­ve­r­sión.

En el siguiente paso, elige el di­s­pa­ra­dor de ejecución o build trigger, con el que se determina las si­tua­cio­nes en las que Jenkins debe iniciar un build. Esto es posible, p. ej., a través de un script especial de otro programa, una vez se haya ejecutado otro build o de manera regular en de­te­r­mi­na­dos in­te­r­va­los de tiempo. También puedes des­en­ca­de­nar un build ma­nua­l­me­n­te, como también haremos en el ejemplo.

El entorno de ejecución, que Jenkins te permite co­n­fi­gu­rar, incluye varias opciones en lo que a los builds respecta, por ejemplo, ¿debe in­te­rru­m­pi­r­se el proceso cuando este se bloquea? o ¿se desea imprimir una marca de tiempo en la consola? Ninguna de las opciones es obli­ga­to­ria.

Fi­na­l­me­n­te se llega a la opción de ejecutar o build: aquí puedes de­te­r­mi­nar con qué se va a construir tu programa. Dado que en la selección estándar de plugins ya se han integrado co­ne­xio­nes a Ant y Gradle, puedes elegir uno de estos programas. Sin embargo, también es posible recurrir a líneas de comandos sencillas. Elige la opción para comandos en lote y deja que el programa compile:

javac MyProgram.java
java MyProgram
Imagen: Opciones de configuración para un proyecto en Jenkins
Opciones de co­n­fi­gu­ra­ción para un proyecto en Jenkins

A co­n­ti­nua­ción, Jenkins te da la po­si­bi­li­dad de llevar a cabo acciones después del build. La rea­li­za­ción de pruebas es un aspecto muy im­po­r­ta­n­te: utiliza la opción “Publish JUnit test result report” para conectar Jenkins con JUnit e integrar re­su­l­ta­dos del marco de pruebas para Java. Además, con los plugins adi­cio­na­les puedes conectar Jenkins con otros entornos de prueba, pudiendo incluso realizar pruebas au­to­má­ti­cas. Asimismo, puedes recibir in­fo­r­ma­ción por email acerca del estado de un build o hacer que otros la reciban. Fi­na­l­me­n­te solo tienes que guardar la in­fo­r­ma­ción: ya habrás creado tu primera tarea.

Consejo

Si deseas instalar plugins, es necesario reiniciar el servidor Jenkins. Para esto tienes que cerrar sesión y a co­n­ti­nua­ción in­tro­du­cir la URL en la barra de di­re­c­cio­nes del navegador sa­fe­Re­s­ta­rt (p. ej. localhost:8080/sa­fe­Re­s­ta­rt). Cuando vuelvas a iniciar sesión podrás confirmar que deseas reiniciar.

Cada uno de los proyectos tiene una subpágina en Jenkins. Aquí puedes iniciar un build, volver a modificar los ajustes y comprobar el estado. En la página Status, Jenkins te muestra el historial de build. ¿Finalizó el último con éxito? El programa marca los éxitos con puntos azules y señala en rojo los errores que, según la in­te­gra­ción continua, hay que subsanar de inmediato. Aquí también puedes ver si hay un build en proceso. Haciendo clic en el número de build se accede a una página detallada en la que se puede vi­sua­li­zar la salida de la consola.

Imagen: Página de estado de un proyecto en Jenkins
Página de estado de un proyecto en Jenkins

En el panel de control de Jenkins puedes ver todos los proyectos en los que estás tra­ba­ja­n­do. Aquí, el programa también marca con colores el estado del proyecto. Además, se ofrece in­fo­r­ma­ción sobre la es­ta­bi­li­dad del build uti­li­za­n­do la si­m­bo­lo­gía de los informes me­teo­ro­ló­gi­cos: gracias a la in­fo­r­ma­ción es­ta­dí­s­ti­ca se puede ver la es­ta­bi­li­dad media de las eje­cu­cio­nes del proyecto. Si más del 80 % se han llevado a cabo co­rre­c­ta­me­n­te, aparece un sol. Por debajo de este valor la in­di­ca­ción me­teo­ro­ló­gi­ca será cada vez peor.

Imagen: Panel de control de Jenkins
Panel de control de Jenkins
V568cAbz2ls.jpg Para mostrar este video, se requieren cookies de terceros. Puede acceder y cambiar sus ajustes de cookies aquí.
Nota

Jenkins te da muchas más po­si­bi­li­da­des de adaptar el programa a tus co­n­di­cio­nes de trabajo y, de esta forma, si­m­pli­fi­car el proceso de in­te­gra­ción continua. En­co­n­tra­rás una solución adecuada para la mayoría de si­tua­cio­nes, es­pe­cia­l­me­n­te gracias a los numerosos plugins.

Ir al menú principal