Blog

Pipelines con Jenkins: un caso de uso

En un artículo anterior vimos cómo realizar la instalación de un plugin en Jenkins (SSH Agent) y un pipeline con el objetivo de testar esta conexión remota por SSH.

En esta ocasión, vamos a crear un pipeline en 3 pasos: clonación de código, build y deploy. En éste, vamos a desplegar el código de sencilla aplicación node en una instancia remota.

Los englobaremos en 2 fases, la fase "sources" y la fase "deploy".

Para ello, utilizaremos un simple "Hello-world" en NodeJS cuyo código fuente puedes encontrar en este repositorio.

Según lo indicado, la definición del pipeline será la siguiente:


pipeline {
   agent any
   stages {
       stage('sources') {
           steps {
               git branch: 'main', url: 'https://github.com/STRSistemas/node-hello-world.git'
               sh 'npm install'
           }
       }
       stage('deploy') {
           steps {
               sh 'scp -r $(pwd)/* jenkins@10.20.30.210:/home/jenkins/test_app'
               sh 'ssh jenkins@10.20.30.210 "sudo /usr/bin/supervisorctl restart all"'
           }
       }
   }
}

Como vemos, cada fase ('sources' y 'deploy') consta de 2 pasos.

En el primer paso de la fase 'sources', clonamos la rama main del respositorio. En el segundo paso, realizamos el build del aplicativo (en este caso, la instalación de dependencias de NodeJS con npm).

En este punto, tendríamos el código preparado y listo para sincronizarlo en la(s) instancia(s) remota(s) en la fase 'deploy'.

En esta segunda fase, en primer lugar realizaremos la sincronización del código en la instancia remota y, posteriormente, una conexión SSH para reiniciar el servicio encargado de levantar el aplicativo (en este caso, se ejecuta el comando 'npm start" configurado en un proceso con supervisord).

Creación y ejecución de un pipeline

creacion_pipelines_ok_1.png

Crearemos una nueva tarea de tipo "pipeline" indicándole el nombre del mismo (en este caso lo hemos llamado "strblog-pipeline-example").

name_pipeline_0.png

Seleccionamos la definición de pipeline tipo "script pipeline" y añadimos el script que hemos revisado anteriormente.

script_pipeline.png

Ya tenemos nuestro ejemplo de pipeline creado, vamos a ejecutarlo:

ejecutar_ppipeline_0.png

Podemos ver que se ha ejecutado correctamente y los tiempos de ejecución de cada una de las 2 fases.

fases_pipeline_0.png

Además, como cualquier otra tarea de Jenkins, podemos revisar el log/output y verificar que la ejecución se ha realizado correctamente. Para ello, vamos a seleccionar la ejecución que acabamos de realizar:

verificacion_ejecucion.png

En este menú, podemos revisar distintos aspectos de la ejecución de nuestro pipeline.

Inicialmente, en "Status" podemos tener una visión genérica de si la ejecución se realizó correctamente, el repositorio de Git y la rama asociada a la ejecución, usuario que generó la ejecución, etc.

status_pipeline_0.png

En este caso, vamos a revisar el "Console Output" para revisar la correcta ejecución de los distintos steps:

console_output_0.png

Podemos ver en el log de la ejecución que los 4 pasos/steps (2 pasos por fase, 2 fases) se ven reflejados en el log y a continuación la salida del resultado de la ejecución de cada paso/step.

pasos_fases_pipeline1.png

pasos_fases_pipeline2.png

 

Recuerda que este es solo un ejemplo básico para ayudarte a comenzar. Puedes personalizar y ampliar tu pipeline de acuerdo con las necesidades específicas de tu proyecto.

Esperamos que esta guía haya sido útil para comprender los conceptos básicos y cómo crear un pipeline sencillo.

¡No dudes en experimentar y explorar todas las posibilidades para automatizar tus procesos de desarrollo y despliegue!

 

Newsletter de STR Sistemas

Suscríbete a nuestra newsletter para recibir contenido interesante del mundo DevOps y artículos escritos por nuestros técnicos

¡Usamos cookies propias y de terceros para mejorar tu experiencia en esta web! Si sigues navegando, consientes y aceptas estas cookies en tu ordenador, móvil o tablet.

Más información sobre las cookies y cómo cambiar su configuración en tu navegador aquí.

x