Instalación y configuración de Jenkins en Ubuntu 14.04

Standard

 

logo-title

Qué tal. En esta ocasión veremos un tutorial que nos ayudará a dar nuestros primeros pasos en el uso de esta útil herramienta, acerca de la cual les hablaré un poco a continuación.

De acuerdo con lo que nos dice su página oficial, Jenkins es, en pocas palabras:

“El servidor de automatización de código abierto líder. Construido en Java, este provee cientos de plug-ins para ofrecer soporte a la construcción, el testeo, el deploying y la automatización de virtualmente cualquier proyecto de software.”

Jenkins es un servidor de integración continua multi-plataforma, el cual, utilizado de la manera correcta, ayuda a los desarrolladores a aumentar su productividad. Es un sistema que se ejecuta en un servidor, el cual puede considerarse un contenedor de servlets.

Entre otras muchas cosas, éste nos permite construir y testear nuestros proyectos de software de manera continua y automatizada, volviendo más fácil la integración de cambios en el proyecto y el conseguir compilaciones actualizadas con la frecuencia que sea necesaria. Además de esto, soporta herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase, también puede ejecutar shell scripts y programas batch de Windows.

Ahora que sabemos esto, podemos comenzar con la instalación y configuración de nuestro propio servidor Jenkins.

Requerimientos del Sistema

Jenkins necesita de una buena cantidad de memoria para operar de manera correcta, para las instalaciones más pequeñas es recomendable contar con entre 256MB-1GB. Además de esto, Jenkins requiere de Java7 o superior para funcionar. Es recomendado utilizar Java8.

Por lo tanto, es importante como primer paso revisar si se cuenta previamente con la instalación de Java en el equipo con el que se trabajará.

Dicho esto, abrimos una terminal y nos disponemos a:

Instalar Java (en caso de que no lo esté)

Para esto, revisamos si existe instalación de Java:

java -version

En caso de estar instalado, aparecerá en pantalla la versión con la que se cuenta y podemos saltar al apartado siguiente. Pero si al ejecutar el comando se nos informa que “el programa Java no está instalado”…

// Actualizar el índice de paquetería e instalar Java Runtime Environment.
sudo apt-get update
sudo apt-get install default-jre

Ya que contamos con el JRE default (en caso de que se tuviera previamente una versión antigua, es conveniente actualizarla a la más reciente), podemos proceder a:

Instalar Jenkins

En las distribuciones de Linux basadas en Debian, como Ubuntu, es posible instalar Jenkins por medio de apt-get desde terminal.

// Descargar el paquete desde la página de Jenkins CI y agregar las llaves
// del repositorio a la lista de sources.
wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

// Ejecutar el shell que agrega Jenkins a la lista de sources.
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'

// Actualizar el índice de paquetería e instalar Jenkins.
sudo apt-get update
sudo apt-get install jenkins

¿Qué es lo que hace este paquete? 

  • Jenkins será ejecutado como un daemon (o servicio) al iniciar el sistema. Ver /etc/init.d/jenkins para más detalles.
  • El usuario “jenkins” es creado para ejecutar este servicio.
  • El archivo log (o de registro) se coloca en: /var/log/jenkins/jenkins.log. Se recomienda revisar este archivo al debuggear o solucionar problemas en el funcionamiento de Jenkins.
  • Los parámetros de configuración se encuentran en /etc/default/jenkins. De manera default, Jenkins utiliza el puerto 8080.

(En caso de error al iniciar Jenkins)

Después de haber hecho esto y al iniciar automáticamente Jenkins, es posible que aparezca en la retroalimentación de la terminal un error como el siguiente:

“The selected http port (8080) seems to be in use by another program
Please select another port to use for jenkins”

Que básicamente nos informa que otro programa o servicio está utilizando ya el puerto 8080 y no es posible que Jenkins también lo utilice (pues es el default para éste).

En este caso, es necesario cambiar el puerto default para Jenkins y así no perjudicar configuraciones anteriores. Para esto necesitamos:

// Editar el archivo de configuración de Jenkins
nano /etc/default/jenkins

Reemplazar el valor de las variables $HTTP_PORT y --httpPort por algún otro puerto disponible. En nuestro caso:

$HTTP_PORT=8081
--httpPort=8081

Y finalmente:

// Reiniciar Jenkins
sudo service jenkins restart

Ahora que Jenkins se encuentra instalado en nuestro equipo y funcionando de manera correcta, es posible acceder a su puerto default en nuestro localhost desde cualquier navegador para comenzar con su configuración.

Siendo así, conozcamos el Panel de Control en su interfaz Web:

Jenkins: Interfaz Web

 

Configuración de Seguridad

Por default, Jenkins no cuenta con una configuración inicial de seguridad para proteger al servidor para ser manipulado únicamente por el administrador del sistema. Tampoco requiere de usuario y contraseña para interactuar con el panel de control. Así que vamos a solucionar eso.

En el Panel de control (al lado izquierdo), ir a: Administrar Jenkins, estando ahí veremos en la parte superior algo como esto:

Captura de pantalla 2016-01-23 a las 10.15.48 a.m.

Entonces seleccionamos la opción Configurar seguridad o, en su defecto, Configuración global de la seguridad.

Estando ahí, marcamos la casilla Activar seguridad. Después de esto, en el apartado Seguridad, deberemos seleccionar la opción Usar base de datos de Jenkins y NO marcar la casilla para permitir a nuevos usuarios registrarse por sí mismos. Ignoren el typo en el nombre del apartado.

Captura de pantalla 2016-02-02 a las 1.18.11 p.m.

En el apartado Autorización, seleccionaremos la opción Estrategia de seguridad para el proyecto, posterior a lo cual se nos mostrará la matriz de permisos.

En la parte inferior de ésta encontraremos el campo Usuario-Grupo para añadir, es necesario que en éste se agregue un nuevo nombre de usuario (que aún no ha sido creado), en este caso para el administrador del sistema.

Seleccionaremos todas las casillas en la fila del nuevo usuario con la finalidad de que el usuario tenga acceso total, y guardamos los cambios. En el ejemplo siguiente hay dos usuarios con todos los permisos. Al usuario Anónimo sólo le concedemos permiso de lectura en Vistas, para que no sea capaz de realizar modificaciones.

Captura de pantalla 2016-01-23 a las 11.10.39 a.m.

Después de guardar los cambios, aparecerá la pantalla de inicio de sesión. En la parte inferior seleccionaremos Crear una cuenta y registraremos los datos con el nombre del usuario administrador, al cual le fueron concedidos todos los permisos.

Agregar una nueva tarea

Ya que terminamos con la configuración básica de la seguridad de Jenkins, podemos proceder a crear nuestra primera tarea para aprender a utilizar de forma práctica esta herramienta.

De nuevo en el Panel de control (al lado izquierdo), iremos a la opción: Nueva Tarea

Crea un proyecto de estilo libre llamado “uptime”:
Captura de pantalla 2016-01-23 a las 11.31.19 a.m.

Guarda los cambios. En la pantalla siguiente, podemos encontrar en la parte inferior el apartado Ejecutar.

En éste, añadiremos un nuevo paso seleccionando la opción Ejecutar línea de comandos (shell) y a continuación ingresaremos en el recuadro el comando uptime. Este comando nos indica cuánto tiempo ha estado corriendo el sistema y la cantidad de usuarios registrados en él.

Captura de pantalla 2016-01-23 a las 11.36.25 a.m.

Una vez guardados los cambios, en el Panel de control (al lado izquierdo), seleccionaremos la opción Construir ahora, para compilar nuestro proyecto.

En Historia de tareas (panel de control al lado inferior izquierdo), deberemos observar algo como esto:

Captura de pantalla 2016-01-23 a las 11.44.45 a.m.

Al dar click en el número de nuestro primer proyecto compilado, tendremos en el panel del lado izquierdo opciones referentes al estado del mismo, en donde podremos consultar su estatus, cambios, salida de consola, opciones para editar la información de la ejecución o incluso para borrar el proyecto. Así podremos ver la salida de consola, que será algo como esto:

Captura de pantalla 2016-02-02 a las 1.59.18 p.m.

Programar la tarea

Jenkins también puede compilar proyectos en demanda. Es decir, es posible programar nuestra tarea para que se ejecute a cierta hora específica del día, o cada determinado lapso. Para muestra de ello vamos a configurar nuestro pequeño proyecto para que se ejecute automáticamente y de manera periódica.

Para esto, iremos al Panel de control (lado izquierdo, ya saben) y seleccionaremos la primera opción, Volver al proyecto. En la página que se muestra, iremos a la parte inferior del panel y seleccionaremos Configurar. Esto nos lleva a la página en la cual configuramos nuestro proyecto la primera vez. Estando allí, nos desplazaremos hasta la sección Disparadores de ejecuciones, y marcaremos la casilla Ejecutar periódicamente.

Captura de pantalla 2016-02-02 a las 4.51.16 p.m.

Si seleccionamos el icono del signo de interrogación azul al lado derecho del recuadro del programador de tareas, aparecerá un recuadro con información bastante detallada acerca de la sintaxis cron, mediante la cual se especifica el lapso en el cual va a ejecutarse la compilación de nuestro proyecto.

En nuestro caso, utilizaremos el parámetro @midnight para que nuestra tarea sea compilada entre la medianoche y las 2:59 AM. Al ingresar el parámetro, en la parte inferior del campo aparecerán los datos de la siguiente compilación.

Conclusión

¡Listo! Hemos creado y ejecutado nuestra primera tarea en el servidor de Jenkins, además, ésta fue programada para ejecutarse de manera automática y periódica en un lapso determinado por nosotros.

Aunque la tarea de ejemplo no es en realidad muy útil y sólo muestra la hora de la ejecución y el estado del servidor, nos da un ejemplo de la capacidad de Jenkins en la creación de tareas. Especialmente al ser combinado con plugins, Jenkins es una herramienta poderosa mediante la cual podemos optimizar de manera notable nuestro flujo de trabajo.

Espero esta información haya sido de utilidad para ustedes como lo fue para mí.

¡Hasta luego!

 

Referencias:

Leave a Reply

Your email address will not be published. Required fields are marked *