«Hola mundo» desde Jenkins

Jenkins es un proyecto de código abierto que permite la automatización de tareas para el proceso de desarrollo de software, es decir, es una de las herramienta que nos permite la implementación de la metodología de Integración Continua. Las tareas que puede manejar van desde la verificación de los estándares de codificación hasta la generación y despliegue de nuevos binarios. «Hola mundo» desde Jenkins es un articulo que pretende cubrir aquellos pasos necesarios para la adición y ejecución de tareas a un servidor de Jenkins.

Lo primero a realizar es la instalación de sus dependencias, y dado que es un proyecto escrito en Java este requiere la máquina virtual provista por el Java Runtime Environment (JRE).

# apt-get install -y software-properties-common
# add-apt-repository -y ppa:openjdk-r/ppa
# apt-get update
# apt-get install -y openjdk-8-jre

Una vez instalada la máquina virtual procedemos a la instalación del binario de Jenkins. En su sitio oficial se menciona una serie de posibles alternativas para su instalación. En esta ocasión utilizaremos la instalación propuesta para servidores Ubuntu.

# wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
# sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
# apt-get update
# apt-get install -y jenkins
# echo "2.89.2" > /var/lib/jenkins/jenkins.install.InstallUtil.lastExecVersion
# export MY_JENKINS_API_TOKEN=secret
# service jenkins restart

El servicio de Jenkins es iniciado por el archivo /etc/init.d/jenkins en el puerto 8080 y un servidor web, cómo Apache o Nginx, puede ser antepuesto para realizar un mejor manejo de las peticiones de los usuarios.

Teniendo el servicio instalado ya solo sera cuestión de agregar las tareas necesarias para nuestro proyecto. Para esto nos ayudaremos de un proyecto creado por el equipo de OpenStack Infra llamado «Jenkins Job Builder» el cual nos permite la generación de tareas de Jenkins en formato XML a partir de un archivo con formato YAML.

# curl -sL https://bootstrap.pypa.io/get-pip.py | python
# pip install jenkins-job-builder
# mkdir -p /etc/jenkins_jobs/
# cat << /etc/jenkins_jobs/jenkins_jobs.ini
[jenkins]
user=admin
password=${MY_JENKINS_API_TOKEN}
url=http://localhost:8080
EOL

En la carpeta de tests del proyecto existen varios ejemplos de como crear una plantilla en formato YAML. Nuestro ejemplo sera algo sencillo, la ejecución de una instrucción en consola.

HolaMundo.yaml

- job:
    name: Hola-mundo
    description: 'Pantilla utilizada para la impresion de Hola mundo desde la consola'
    builders:
      - shell: |
          #!/bin/bash
          echo 'Hola Mundo!'

Por ultimo queda agregar la tarea en el servidor local de Jenkins. Para ello utilizaremos el binario instalado por el proyecto jenkins-job-builder con el comando update y el nombre de la plantilla creada.

$ jenkins-jobs update HolaMundo.yaml

Si deseamos la ejecución de dicha tarea lo podemos realizar seleccionando manualmente la opción Build Now desde el menú desplegable de la tarea deseada.