Jenkins, más que un software de integración continua.
Compartir

En este artículo veremos como Jenkins nos puede ayudar para enmallar procesos batch y al final un listado de códigos que podrá reutilizar para fin.
Como muchos saben, Jenkins es una herramienta open source de integración continua, usada principalmente para orquestar procesos en el desarrollo de software, pero sus grandes capacidades permiten utilizarlo para mas cosas.
Si revisamos sus características, podemos identificar a grandes rasgos las siguientes:
- 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.
Si bien Jenkins fue pensado para orquestar procesos de desarrollo, las siguientes características permite utilizarlo fácilmente como enmallador de procesos:
- 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
Jenkins resuelve la secuencialidad de pasos creando pipelines, que son una secuencia de pasos que se codifican en un archivo que llamaremos Jenkinsfile en lenguaje groovy.

Jenkins trabaja con un servidor master al cual se les puede agregar esclavos o maquinas de diferentes plataformas.

Si bien es cierto Jenkins, cuenta con varios tipos de job, con el del tipo “Pipeline” es posible orquestar procesos sin mayor problema.


Como todo proceso que se enmalla, es posible ejecutarlo a una determinada hora como se indica en la siguiente imagen.

Ejemplos de Pipeline básico
Uso de stage
node {
stage('Etapa 1') {
sleep 3
echo "Finaliza etapa 1"
}
stage('Etapa 2 paralela') {
parallel(
'Etapa 2 A': {
sleep 5
echo "Finaliza etapa 2 A"
},
'Etapa 2 B': {
sleep 2
echo "Finaliza etapa 2 B"
}
)
}
stage('Etapa 3') {
sleep 3
echo "Finaliza etapa 3"
}
}
Variables
node {
texto = 'Hola' //Variables string con comillas simples o dobles
numero = 999 //Puedo o no se indica el tipo de variable
numero ++
echo texto + " " + numero
}
Sentencias de control y loop
node {
stage('Ejemplo') {
valor = true
if (valor) {
echo 'en if'
}
for (i = 0; i< 10; i++) {
echo "For: " + i
}
}
}
Métodos
def metodo(texto) {
echo texto
}
node(){
stage("Saludando") {
metodo("hola")
}
}
Importar clases
import java.text.SimpleDateFormatnode() {
def dateFormat = new SimpleDateFormat("yyyyMMdd")
def date = new Date()
fechaConFormato = dateFormat.format(date)
echo fechaConFormato
}
Sintaxis declarativa
pipeline {
agent any
stages {
stage('Etapa 1') {
steps {
echo "En Etapa 1"
}
}
stage('Etapa 2') {
steps {
echo "En Etapa 1"
}
}
stage('Etapa 3') {
steps {
echo "En Etapa 3"
}
}
}
post {
always {
echo 'Ejecuta siempre'
}
failure {
echo 'Ejecuta en error'
} }
}