Cómo programar un trabajo con Jenkins

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *