Cómo automatizar la configuración de trabajos de Jenkins mediante Job DSL

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación del complemento Job DSL
  • Paso 2: creación de un trabajo inicial
  • Paso 3: Ejecución del trabajo de semilla
  • Paso 4: Definición de trabajos de pipeline
  • Conclusión
  • El autor seleccionó Internet Archive para recibir una donación como parte del programa Write for DOnations.

    Introducción

    Jenkins es un servidor de automatización popular, que se utiliza a menudo para orquestar flujos de trabajo de integración continua (CI) e implementación continua (CD). Sin embargo, el proceso de configuración de Jenkins en sí mismo ha sido tradicionalmente un proceso manual y aislado para el administrador del sistema. El proceso normalmente implica instalar dependencias, ejecutar el servidor Jenkins, configurar el servidor, definir canalizaciones y configurar trabajos.

    Luego llegó el paradigma Todo como código (EaC), que permitió a los administradores definir estas tareas manuales como código declarativo que se puede controlar por versiones y automatizar. En tutoriales anteriores, cubrimos cómo definir los pipelines de Jenkins como código usando Jenkinsfiles, así como también cómo instalar dependencias y definir la configuración de un servidor Jenkins como código usando Docker y JCasC. Pero usar solo Docker, JCasC y pipelines para configurar su instancia de Jenkins solo lo llevaría hasta cierto punto: estos servidores no vendrían precargados con ningún trabajo, por lo que alguien aún tendría que configurarlos manualmente. El complemento Job DSL proporciona una solución y le permite configurar trabajos de Jenkins como código.

    En este tutorial, utilizará Job DSL para configurar dos trabajos de demostración: uno que imprime un 'Hello World'mensaje en la consola y otro que ejecuta una secuencia de comandos desde un repositorio de Git. Si sigue el tutorial hasta el final, tendrá un script Job DSL mínimo que puede desarrollar para sus propios casos de uso.

    Prerrequisitos

    Para completar este tutorial, necesitarás:

    • Un servidor Jenkins configurado mediante el asistente de configuración o mediante la configuración de Jenkins como código (JCasC). Si no tienes un servidor Jenkins con el que puedas experimentar, puedes seguir nuestras otras guías para instalar Jenkins en Ubuntu, en Kubernetes o con Docker y JCasC.

    Paso 1: Instalación del complemento Job DSL

    El complemento Job DSL proporciona las funciones de Job DSL que utilizará en este tutorial para sus trabajos de demostración. En este paso, instalará el complemento Job DSL.

    En primer lugar, dirígete a your_jenkins_url/pluginManager/available. En el cuadro de búsqueda, escribe Job DSL. A continuación, en la lista de complementos resultante, marca la casilla junto a Job DSL y haz clic en Instalar sin reiniciar .

    Nota: Si la búsqueda Job DSLno arroja resultados, significa que el complemento Job DSL ya está instalado o que la lista de complementos de su servidor Jenkin no está actualizada.

    Puede comprobar si el complemento Job DSL ya está instalado navegando your_jenkins_url/pluginManager/installedy buscando Job DSL.

    Puede actualizar la lista de complementos de su servidor Jenkins navegando your_jenkins_url/pluginManager/availabley haciendo clic en el botón Verificar ahora en la parte inferior de la lista de complementos (vacía).

    Después de iniciar el proceso de instalación, se le redirigirá a una página que muestra el progreso de la instalación. Espere hasta que vea Éxito junto a Job DSL y Cargando extensiones de complemento antes de continuar con el siguiente paso.

    Ha instalado el complemento Job DSL. Ahora está listo para usar Job DSL para configurar trabajos como código. En el siguiente paso, definirá un trabajo de demostración dentro de un script Job DSL. Luego, incorporará el script en un trabajo inicial que, cuando se ejecute, creará los trabajos definidos.

    Paso 2: creación de un trabajo inicial

    El trabajo inicial es un trabajo normal de Jenkins que ejecuta el script DSL de trabajo; a su vez, el script contiene instrucciones que crean trabajos adicionales. En resumen, el trabajo inicial es un trabajo que crea más trabajos. En este paso, creará un script DSL de trabajo y lo incorporará a un trabajo inicial. El script DSL de trabajo que definirá creará un único trabajo de estilo libre que imprime un 'Hello World!'mensaje en la salida de la consola del trabajo.

    Un script de DSL de trabajo consta de métodos de API proporcionados por el complemento de DSL de trabajo; puede utilizar estos métodos de API para configurar diferentes aspectos de un trabajo, como su tipo (trabajos de estilo libre frente a trabajos de canalización), activadores de compilación, parámetros de compilación, acciones posteriores a la compilación, etc. Puede encontrar todos los métodos compatibles en el sitio de referencia de API.

    De manera predeterminada, el sitio muestra los métodos de API para las opciones de configuración de trabajos que están disponibles como parte de la instalación principal de Jenkins, así como las opciones que están habilitadas por 184 complementos compatibles (precisos a partir de v1.77). Para obtener una imagen más clara de qué métodos de API proporciona el complemento Job DSL solo para la instalación principal de Jenkins, haga clic en el ícono de embudo junto al cuadro de búsqueda y luego marque y desmarque la casilla de verificación Filtrar por complemento para anular la selección de todos los complementos.

    La lista de métodos de API se ha reducido significativamente. Los que quedan funcionarán incluso si la instalación de Jenkins no tuviera complementos instalados aparte del complemento Job DSL.

    Para el trabajo de estilo libre "Hola mundo", necesitas el jobmétodo API ( freeStyleJobes un alias de joby también funcionaría). Naveguemos a la documentación del jobmétodo.

    Haga clic en el icono de puntos suspensivos ( ) job(String name) { … }para mostrar los métodos y bloques que están disponibles dentro del jobbloque.

    Repasemos algunos de los métodos y bloques más utilizados dentro del jobbloque:

    • parameters:Establecer parámetros que los usuarios deben ingresar cuando crean una nueva compilación del trabajo.
    • properties:valores estáticos que se utilizarán dentro del trabajo.
    • scm:configuración sobre cómo recuperar el código fuente de un proveedor de gestión de control de fuente como GitHub.
    • steps:definiciones para cada paso de la construcción.
    • triggers:además de crear manualmente una compilación, especifica en qué situaciones se debe ejecutar el trabajo (por ejemplo, periódicamente como un trabajo cron o después de algunos eventos como un envío a un repositorio de GitHub).

    Puede expandir aún más los bloques secundarios para ver qué métodos y bloques están disponibles. Haga clic en el icono de puntos suspensivos ( ) steps { … }para descubrir el shell(String command)método, que puede usar para ejecutar un script de shell.

    Al juntar las piezas, puedes escribir un script DSL de trabajo como el siguiente para crear un trabajo de estilo libre que, cuando se ejecute, se imprimirá 'Hello World!'en la consola de salida.

    job('demo') {    steps {        shell('echo Hello World!')    }}

    Para ejecutar el script DSL de trabajo, primero debemos incorporarlo a un trabajo semilla.

    Para crear el trabajo inicial, vaya a your_jenkins_url, inicie sesión (si es necesario), haga clic en el enlace Nuevo elemento a la izquierda del panel. En la pantalla que aparece a continuación, escriba seed, seleccione Proyecto Freestyle y haga clic en Aceptar .

    En la pantalla que aparece a continuación, desplácese hacia abajo hasta la sección Generar y haga clic en el menú desplegable Agregar paso de generación . A continuación, seleccione Procesar DSL de trabajo .

    Luego, haga clic en el botón de opción junto a Usar el script DSL proporcionado y pegue el script DSL de trabajo que escribió en el área de texto del script DSL .

    Haga clic en Guardar para crear el trabajo. Esto lo llevará a la seedpágina del trabajo.

    Luego, navegue your_jenkins_urly confirme que el seedtrabajo está allí.

    Ha creado correctamente un trabajo inicial que incorpora su secuencia de comandos DSL de trabajo. En el siguiente paso, ejecutará el trabajo inicial para que se creen nuevos trabajos basados ​​en su secuencia de comandos DSL de trabajo.

    Paso 3: Ejecución del trabajo de semilla

    En este paso, ejecutará el trabajo inicial y confirmará que los trabajos definidos dentro del script DSL de trabajo realmente se crearon.

    Primero, vuelva a la seedpágina del trabajo y haga clic en el botón Construir ahora a la izquierda para ejecutar el seedtrabajo.

    Actualice la página y verá una nueva sección que dice Elementos generados ; enumera el demotrabajo que ha especificado en su script DSL de trabajo.

    Navegue hasta your_server_ipdonde se encuentra el demotrabajo que especificó en el script DSL de trabajo.

    Haga clic en el enlace de demostración para ir a la demopágina del trabajo. Verá Seed job: seed , lo que indica que este trabajo lo creó el seedtrabajo. Ahora, haga clic en el enlace Build Now (Crear ahora) para ejecutar el demotrabajo una vez.

    Esto crea una entrada dentro del cuadro Historial de compilación . Pase el cursor sobre la fecha de la entrada para revelar una pequeña flecha; haga clic en ella para revelar el menú desplegable. En el menú desplegable, elija Salida de consola .

    Esto le mostrará los registros y la salida de la consola de esta compilación. Allí, encontrará la línea + echo Hello World!seguida de Hello World!, que corresponde al shell('echo Hello World!')paso en su script DSL de Job.

    Ha ejecutado el demotrabajo y ha confirmado que echose ejecutó el paso especificado en el script DSL de trabajo. En el siguiente y último paso, modificará y volverá a aplicar el script DSL de trabajo para incluir un trabajo de canalización adicional.

    Paso 4: Definición de trabajos de pipeline

    En línea con el paradigma Todo como código, cada vez más desarrolladores eligen definir sus compilaciones como trabajos de pipeline (aquellos que utilizan un script de pipeline (normalmente llamado Jenkinsfile)) en lugar de trabajos de estilo libre. El demotrabajo que has definido hasta ahora es una pequeña demostración. En este paso, definirás un trabajo más realista que extrae un repositorio de Git desde GitHub y ejecuta un pipeline definido en uno de sus scripts de pipeline.

    Para que Jenkins extraiga un repositorio de Git y cree secuencias de comandos de pipeline, deberá instalar complementos adicionales. Por lo tanto, antes de realizar cambios en el script DSL de Job, asegúrese primero de que estén instalados los complementos necesarios.

    Navegue hasta your_jenkins_url/pluginManager/installedlas listas de complementos y verifique la presencia de los complementos Git, Pipeline: Job y Pipeline: Groovy. Si alguno de ellos no está instalado, vaya a your_jenkins_url/pluginManager/available, busque y seleccione los complementos, luego haga clic en Instalar sin reiniciar .

    Ahora que los complementos necesarios están instalados, centremos nuestra atención en modificar el script DSL de trabajo para incluir un trabajo de canalización adicional.

    Definiremos un trabajo de canalización que extraiga el código del jenkinsci/pipeline-examplesrepositorio público de Git y ejecute el environmentInStage.groovyscript de canalización declarativo que se encuentra en él.

    Una vez más, navegue a la Referencia de API de DSL de Jenkins Job, haga clic en el ícono de embudo para que aparezca el menú Filtrar por complemento , luego anule la selección de todos los complementos excepto Git , Pipeline: Job y Pipeline: Groovy .

    Haga clic en pipelineJob en el menú del lado izquierdo y expanda el pipelineJob(String name) { … }bloque, luego, en orden, los definition { … }bloques , cpsScm { … }y .scm { … }

    Hay comentarios sobre cada método de API que explican sus funciones. Para nuestro caso de uso, querrá definir su trabajo de canalización mediante un script de canalización que se encuentra dentro de un repositorio de GitHub. Por lo tanto, deberá modificar su script DSL de trabajo de la siguiente manera:

    job('demo') {    steps {        shell('echo Hello World!')    }}pipelineJob('github-demo') {    definition {        cpsScm {            scm {                git {                    remote {                        github('jenkinsci/pipeline-examples')                    }                }            }            scriptPath('declarative-examples/simple-examples/environmentInStage.groovy')        }    }}

    Para realizar el cambio, vaya al your_jenkins_url/job/seed/configureárea de texto Script DSL y reemplace el contenido con el nuevo script DSL de trabajo. Luego presione Guardar . En la siguiente pantalla, haga clic en Generar ahora para volver a ejecutar el trabajo inicial.

    Luego, vaya a la página de Salida de la consola de la nueva compilación y encontrará Added items: GeneratedJob{name='github-demo'}, lo que significa que ha agregado exitosamente el nuevo trabajo de canalización, mientras que el trabajo existente permanece sin cambios.

    Puedes confirmarlo yendo a your_jenkins_url; encontrarás el github-demotrabajo en la lista de trabajos.

    Por último, confirme que su trabajo está funcionando como se esperaba navegando hasta Build Nowyour_jenkins_url/job/github-demo/ y haciendo clic en . Una vez que la compilación haya finalizado, navegue hasta y encontrará la página de salida de la consola que muestra que Jenkins ha clonado correctamente el repositorio y ha ejecutado el script de canalización.your_jenkins_url/job/github-demo/1/console

    Conclusión

    En este tutorial, utilizó el complemento Job DSL para configurar trabajos en servidores Jenkins de una manera consistente y repetible.

    Pero Job DSL no es la única herramienta en el ecosistema de Jenkins que sigue el paradigma Everything as Code (EaC). También puedes implementar Jenkins como contenedores Docker y configurarlo usando Jenkins Configuration as Code (JCasC). Juntos, Docker, JCasC, Job DSL y los pipelines permiten a los desarrolladores y administradores implementar y configurar Jenkins de forma completamente automática, sin ninguna intervención manual.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion