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 *