Cómo programar un trabajo con Jenkins

C

Introducción

Programar un trabajo en Jenkins es muy útil cuando se trata de desarrollar un gran producto. Imagínese la gran ventaja que supone transformar una tarea que requiere mucho tiempo en un trabajo automatizado. No necesita supervisión y, siempre que no haya errores en el flujo de trabajo, no debería preocuparse.

En el artículo de hoy haremos un trabajo que se ejecutará cada cinco minutos y tiene el siguiente resultado:

Hello, World!
Today's:
<<date>>
Here's the current time:
<<time>>

Además, crearemos un trabajo que observa otro proyecto y, según su estado, imprime una declaración automatizada.

Casos de uso para la automatización con Jenkins

Pero antes de sumergirnos en la parte técnica, tomemos un momento para considerar qué se puede automatizar en Jenkins. Por supuesto, con un poco de imaginación, puede abordar la mayoría de los problemas y automatizarlos. Echemos un vistazo a un ejemplo que podría automatizarse con Jenkins si tiene un poco (más) de paciencia y también está ansioso por profundizar sus habilidades de Jenkins.

Productos como Amazon Echo y Alexa se pueden configurar para llamar trabajos de Jenkins que realizan varias acciones. Podría integrarlo con relativa facilidad en su hogar inteligente:

  • Di “Alexa, cierra las puertas” (esa sería la desencadenar, lo que significa que Jenkins escuchará ese evento).
  • La habilidad de Alexa activa un trabajo de Jenkins.
  • El trabajo de Jenkins usará un script para llamar a la API del sistema de bloqueo de puertas inteligentes.
  • Alexa espera a que termine el trabajo de Jenkins y le dice cómo fue, es decir, “Puerta bloqueada correctamente”, “Las puertas ya están bloqueadas” o “Las puertas no se pudieron bloquear”.

Por supuesto, ese no es un trabajo de CI / CD, pero está dentro del dominio de las posibilidades de la tecnología existente con Jenkins.

Requisitos

  • Un servidor Jenkins: para este tutorial, usaremos la imagen oficial de Docker para configurar un servidor Jenkins
  • Un trabajo que te gustaría automatizar

Creación de un trabajo de Jenkins

Inicie sesión en su aplicación Jenkins y haga clic en Crear un trabajo. No importa el tipo de trabajo. Puede ser Freestyle, Maven, etc. Lo único que importa es cómo configuramos el planificador.

Para este artículo, usaremos Pipeline. Elija un nombre para su proyecto y guárdelo:

Ahora, antes de ocuparnos de la parte de programación, configuremos el script Pipeline Groovy que imprimirá el mensaje de la introducción.

Desplácese hacia abajo hasta Tubería y agregue el siguiente script:

pipeline {
    agent any

    stages {
        stage('Write Greetings') {
            steps {
                echo 'Hello, World!'
            }
        }
        
        stage('Write Date') {
            steps {
                print 'Today's '
                print new Date().format("dd-MM-yyyy", TimeZone.getTimeZone("UTC"))
            }
        }
        
        stage('Write Hour') {
            steps {
                print 'Here's the current time '
                print new Date().format("HH:mm:ss", TimeZone.getTimeZone("UTC"))
            }
        }
    }
}

El guión tiene tres etapas: escribir saludos, escribir la fecha y escribir la hora. Usamos etapas para definir y estructurar mejor nuestro guión. Además, las etapas se pueden ver en la interfaz de usuario de Jenkins.

En caso de que uno de ellos falle, sabrá cuál:

Ejecutando el trabajo

¡Tenemos nuestro trabajo listo para ser activado! Hagamos clic en Construye ahora y verifique la salida:

Started by user Alex
Running in Durability level: MAX_SURVIVABILITY
Running on Jenkins in /var/jenkins_home/workspace/Scheduled Pipeline
Hello, World!
Today's:
24-12-2020
Here's the current time:
16:00:38
Finished: SUCCESS

También puede ver en la página del trabajo el tiempo promedio para cada etapa:

Hay muchas formas de activar un trabajo de Jenkins: manualmente (por supuesto), usando una expresión Cron, ganchos, viendo otros proyectos, etc.

Programación de trabajos de Jenkins con Cron

Comencemos con la activación de un trabajo a través de la utilidad Cron. Nosotros elegiremos Construye periódicamente y por el Calendario campo use la siguiente expresión:

H/5 * * * *

Esta expresión significa que el trabajo se ejecutará cada 5 minutos. Algunos ejemplos útiles de otros patrones podrían ser:

  • 0 0 13 1/1 * ? * – cada hora, a partir de las 13:00;
  • 0 0 17 ? * MON-FRI * – todos los días laborables, a las 17 h;

Si no desea aprender este tipo de formato para programar su trabajo, puede usar un generador de expresiones Cron como CronMaker.

Veamos el resultado. Para esto, tendremos que esperar. Después de 10 minutos, debería ver que 2 trabajos se activaron automáticamente:

Observe que el primer trabajo se ejecutó a las 9:12 p.m., luego a las 9:17 p.m. y el último a las 9:22 p.m. ¡Así que la regla funcionó! Tenemos un trabajo que se ejecuta cada 5 minutos.

Programación de un trabajo de Jenkins mirando otros proyectos

Ahora que hemos visto cómo podemos programar un trabajo periódicamente, creemos otro que se active cada vez que el primero tenga éxito. Cree otro proyecto de canalización y agregue el siguiente código:

pipeline {
    agent any

    stages {
        stage('It worked') {
            steps {
                echo 'The other job worked!'
            }
        }
    }
}

Tenemos nuestro script de canalización, programemoslo. En el Construir disparadores pestaña, seleccione Construya después de que se construyan otros proyectos.

Ingrese el proyecto que necesita ser observado y seleccione los casos en los que este debe activarse:

Guárdalo y esperemos un poco. Debería ver que el nuevo trabajo se activa cada vez que el primero tiene éxito. Puede ver los detalles de la primera ejecución de este segundo trabajo que fue activado por el trabajo creado antes:

Aquí está el resultado:

Started by upstream project "Scheduled Pipeline" build number 7
originally caused by:
 Started by timer
Running in Durability level: MAX_SURVIVABILITY
Running on Jenkins in /var/jenkins_home/workspace/The other job worked
The other job worked!
Finished: SUCCESS

Conclusión

La automatización es muy útil y una de las cosas clave que nos aporta la tecnología, independientemente del proceso que se quiera automatizar.

En este artículo, hemos repasado cómo programar un trabajo en Jenkins para que se ejecute periódicamente usando un patrón Cron, así como para que se ejecute cuando se compilan otros proyectos.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad