ℹ️ Con este ejemplo, os vamos a mostrar como automatizar el proceso de clonado, instalación y por último pruebas (Con Mocha y Chai) en una pequeña aplicación en NodeJS.
-
Tener una raspberry Pi con un SO GNU/Linux (Este ejemplo fue realizado con Raspbian).
-
Habilitar SSH en la Raspberry para poder conectarnos con nuestro equipo y realizar la instalación de forma más cómoda (Se sugiere esta opción para no tener que manejar los dos equipos).
-
Tener instalado Jenkins en la Raspberry
-
Acceder al servidor Jenkins desde nuestro equipo
Simplemente tenemos que escirbir en la URL la IP de nuestra Raspberry seguido de : y el puerto 8080, a continuación nos autenticamos con el usuario creado en la instalación de Jenkins.
-
Instalar el Plugin de NodeJS en nuestro servidor Jenkins
Accedemos al apartado "Administrar Jenkins" y después en "Administrar Plugins" buscamos el plugin NodeJS y lo instalamos.
-
Ahora tenemos que instalar NodeJS en nuestra Raspberry, necesario para poder realizar la compilación de nuestros proyectos. De paso ya instalamos npm (Empleado para ejecutar comandos como npm install), y mocha (Empleado para lanzar los tests) .
pi:$ sudo apt install nodejs
pi:$ sudo apt install npm
pi:$ npm install mocha
-
A continuación lanzamos el comando
pi:$ node -v
que nos muestra la versión de nodeJS en nuestra Raspberry, supongamos que es la versión "X.X.X". -
Para finalizar, solo faltaría configurar el plugin de NodeJS, indicándole la versión obtenida en el paso anterior. Para ello vamos a ⚙️ Administrar Jenkins -> 🛠️ Configuración global de herramientas y accedemos a "Añadir NodeJS", y veremos lo siguiente:
En la versión de node debemos indicar la versión instalada y añadir la configuración. En paquetes globales podemos instalar todos los paquetes que necesite nuestro proyecto, eso sí, solo los globales. Si instalamos un paquete de forma global y se necesita en la carpeta node_modules del proyecto no va a funcionar (Un ejemplo claro es la instalación de "chai", empleado en los tests). Este paquete debe instalarse después de instalar el proyecto.
-
Una vez finalizada la configuración ya podemos crear nuestro "Pipeline". Vamos a "Nueva tarea" y accedemos a "Pipeline", le damos un nombre y seleccionamos la opción que nos permite obtener el archivo de configuración de Jenkins (Jenkinsfile) del repositorio de GIT.
💚 En verde tenemos la opción que nos permite obtener el Pipeline del repositorio.
💛 En amarillo tenemos la ubicación del "Jenkinsfile", si el archivo se encontrase dentro de la carpeta "config" que cuelga del directorio principal la ruta sería: "config/Jenkinsfile".
💙 En azul tenemos el SCM, empleado para indicar de qué repositorio vamos a clonar el proyecto, las credenciales (en caso de que sean necesarias) y la rama del proyecto que queremos probar, en nuestro caso la rama Master.
En caso de que el repositorio fuera privado, necesariamente tenemos que añadir las credenciales de acceso.
-
Ahora sí ya podemos construir nuestro proyecto con la opción 🕙Construir ahora. Una vez finalizado deberíamos ver lo siguiente:
En el caso de que algún paso fallase, este aparecería en color rojo y finalizaría la ejecución. Por lo tanto, no se ejecutarían los pasos siguientes.
pipeline {
agent any
tools {nodejs "node"}
stages {
Instalamos el proyecto, necesario porque en Git no se guardan todas las dependencias
del proyecto, en concreto la carpeta node_modules no se sube a Git por su tamaño.
La instalación de chai es necesaria hacerla de forma local antes de lanzar los tests.
*/
stage('Install dependencies') {
steps {
sh 'npm install'
sh 'npm install --save-dev chai'
}
}
/*
Por último, lanzamos los tests.
*/
stage('Test') {
steps {
sh 'npm test'
}
}
}
}