Crear gráficas con los resultados que queremos en Jenkins es sumamente sencillo gracias a que permite instalar miles de plugins. Uno de ellos, Plot, permite graficas nuestros datos en bonitas y útiles gráficas.
Seguid leyendo y os enseñaré a crear graficas de vuestros Jobs en Jenkins...
¿QUÉ ES JENKINS?
Jenkins es un servidor que sirve para automatizar tareas, escrito en Java y open source. Está basado en el proyecto Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre.
Jenkins ayuda en la automatización de parte del proceso de desarrollo de software mediante integración continua y facilita ciertos aspectos de la entrega continua. Admite herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como secuencias de comandos de consola y programas por lotes de Windows. Publicado bajo licencia MIT, Jenkins es software libre.
Principales características:
- Puede orquestar cualquier tipo de proceso.
- Utilizada para ejecutar tareas manuales, periódicas o automáticas.
- Cuenta con más de 1400 plugins
- Puede aumentar su capacidad de cómputo añadiendo nuevos agentes o servidores
- Fácil de usar
- Dashboard para visualizar estado de tareas.
También es posible utilizar Jenkins para:
- Permite ejecución de procesos secuenciales
- Monitoreo de procesos
- Permite ejecución a horas determinadas
- Ejecución en base a eventos
- Ejecución distribuida en varias máquinas
- Alertas ante problemas en algún proceso
Web: https://jenkins.io/
Jenkins permite instalar cientos/miles de plugins de todo tipo
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un equipo con Jenkins instalado
- Conexión a Internet recomendado
2.- INSTALAR PLUGIN
Instalar el plugin para generar las gráficas es sumamente sencillo. Tan solo deberemos acceder como administradores a la URL de Jenkins: http://$URL_JENKINS/manage/pluginManager/available e instalar el plugin llamado Plot.
3.- CONFIGURACIÓN DE UN JOB DE ESTILO LIBRE
El primero paso que debemos hacer es crear un Job de tipo "estilo libre". Vamos a crear un Job muy sencillo para ver cómo podemos crear unas sencillas gráficas.
Crear Job de estilo libre
En la configuración del Job introduciremos los siguientes datos en la parte General, donde deberemos decirle en que nodo de Jenkins queremos que se ejecute el Job, en mi caso en un agente llamado debian:
Configuración General
Como opción en el "Entorno de ejecución" tengo marcada la opción de borrar el workspace antes de arrancar el job:
Entorno de Ejecución
Aquí es donde está "la magia". Crearemos un script sencillo de BASH dentro de "Build Steps" que haga lo siguiente:
- Crear 2 columnas separadas por comas (Tamaño y Tiempo)
- Meter los datos generados en $RANDM11 y $RANDOM12 que no son más qué números aleatorios generador con shuf
Toda la información será guardada en file1.csv.
Además, crearemos otro fichero file2.csv de la misma manera, pero variando el "límite inferior" y el "límite superior "en shuf de los números generados.
Build steps
Añadiremos el plugin "Plot build data" con la siguiente información para la gráfica número 1:
- Plot group: Mi_Primer_Plot
- Plot title: Ejecución Servidor 1
- Plot description: Resultados en el Servidor 1
- Number of builds to include: 10
- Plot y-axes label: Tiempo y tamaño
- Plot style: Line
- Load data from CSV file:
- Marcamos Include all columns
- URL: file1.csv
Añadiremos otra gráfica, pero para la número 2:
- Plot group: Mi_Primer_Plot
- Plot title: Ejecución Servidor 2
- Plot description: Resultados en el Servidor 2
- Number of builds to include: 10
- Plot y-axes label: Tiempo y tamaño
- Plot style: Line
- Load data from CSV file:
- Marcamos Include all columns
- URL: file2.csv
Los campos no tienen ningún misterio, por lo que no voy a entrar a explicarlos.
Configuración de la gráfica 1
Una vez ejecutemos el Job, veremos a la izquierda un nuevo botón que pone Plot. Si pinchamos en él, veremos las gráficas generadas a la derecha
Gráficas en Jenkins
4.- CONFIGURACIÓN DE JOB PIPELINE CON GRÁFICAS
Si lo que queréis es hacer lo mismo, pero en una Pipeline, a continuación os dejo el código de la Pipeline. tened en cuenta que debéis crear otro Job nuevo, pero de tipo Pipeline en lugar de Estilo Libre:
pipeline {
agent { label 'debian' }
stages {
stage ('Crear Ficheros CSV') {
steps {
sh '''
#/bin/bash
RANDOM11=`shuf -i 8000-9000 -n1`
RANDOM12=`shuf -i 200-500 -n1`
echo "Size, Time" > file1.csv
echo "$RANDOM11,$RANDOM12" >> file1.csv
RANDOM21=`shuf -i 1000-5000 -n1`
RANDOM22=`shuf -i 200-1000 -n1`
echo "Size, Time" > file2.csv
echo "$RANDOM21,$RANDOM22" >> file2.csv '''
}
}
stage ('Recoger datos 1') {
steps {
plot csvFileName: 'file1.csv',
csvSeries: [[
displayTableFlag: false,
exclusionValues: '',
file: '',
inclusionFlag: 'OFF',
url: 'file1.csv']],
description: 'Resultados en el Servidor 1',
group: 'Mi_Primer_Plot',
numBuilds: '10',
style: 'line',
title: 'Ejecución Servidor 1',
yaxis: 'Tiempo y Tamaño'
}
}
stage ('Recoger datos 2') {
steps {
plot csvFileName: 'file2.csv',
csvSeries: [[
displayTableFlag: false,
exclusionValues: '',
file: '',
inclusionFlag: 'OFF',
url: 'file2.csv']],
description: 'Resultados en el Servidor 2',
group: 'Mi_Primer_Plot',
numBuilds: '10',
style: 'line',
title: 'Ejecución Servidor 2',
yaxis: 'Tiempo y Tamaño'
}
}
}
post {
always {
cleanWs()
}
}
}
Disponemos de diversos formatos para las gráficas. Podemos elegir todos los siguientes formatos:
- Area
- Bar
- Bar 3D
- Line
- Line Simple
- Line 3D
- Stacked Area
- Stacked Bar
- Stacked Bar 3D
- Waterfall
Gráfica de Area
Gráfica de Bar
Gráfica de Bar 3D
Gráfica de Line
Gráfica de Line Simple
Gráfica de Line 3D
Gráfica de Stacked Area
Gráfica Stacked Bar
Gráfica Stacked Bar 3D
Gráfica de Waterfall
ENJOY!