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
Crearemos una nueva tarea de tipo "pipeline" indicándole el nombre del mismo (en este caso lo hemos llamado "strblog-pipeline-example").
Seleccionamos la definición de pipeline tipo "script pipeline" y añadimos el script que hemos revisado anteriormente.
Ya tenemos nuestro ejemplo de pipeline creado, vamos a ejecutarlo:
Podemos ver que se ha ejecutado correctamente y los tiempos de ejecución de cada una de las 2 fases.
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:
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.
En este caso, vamos a revisar el "Console Output" para revisar la correcta ejecución de los distintos steps:
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.
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!