jenkinsback - keblato/TutorialesTalleres-Angular GitHub Wiki

Configuración de integración continua con Jenkins (Pruebas del Banckend)

Configuraciones previas

Después de haber instalado Jenkins (si no ha configurado Sonar, o no ha especificado en la instalación de NodeJs para Jenkins que Mocha, Chai e Istanbul sean también instalados, dírijase a Instalación y configuración de Jenkis.

¿Qué pruebas se van a ejecutar en esta tarea?

Este tutorial le explicará cómo crear una tarea en Jenkins para ejecutar las pruebas unitarias de un Backend desarrollado en NodeJs. Para ello se utilizarán Mocha y Chai porque son los packages utilizados para escribir las pruebas, e Istanbul que se encarga de calcular el cubrimiento de las pruebas.

Istanbul genera un resumen de cubrimiento llamado lcov.info, el cual es leído por SonarQube. En SonarQube podrá ver visualizar y detallar a fondo los resultados del cubrimiento de las pruebas.

La nueva tarea de Jenkins

Después de haber realizado las configuraciones previas, diríjase a la página principal de Jenkins y haga click en 'Nueva tarea'. Asígnele un nombre y elija la opción Freestyle project

Jenkins-back-nuevatarea
Figura 1: creación de una nueva tarea

Configure los datos del repositorio que quiere probar.

Luego, seleccione la instalación de Jenkins que contiene Chai, Mocha e Istanbul y escriba los siguientes códigos a ejecutar en Shell o ventana de comandos de Windows:

npm install

npm run coverage

Importante: coverage es un script que se definió en el package.json del proyecto para obligar a Istanbul a generar el archivo lcov.info que requiere Sonar.

Defínalo en su package.json, o de lo contrario ejecute:

npm install

nyc --reporter=lcov --reporter=text-lcov npm test

Jenkins-back-shellpruebas
Figura 2: comandos para ejecutar las pruebas
Jenkins-back-scriptcoverage
Figura 3: especificación del script coverage

Luego agregue un paso de tipo Execute SonarQube Scanner y defina su configuración:

Jenkins-back-confSonar
Figura 4: configuración ejemplo de Sonar

En el caso del ejemplo, se definen las siguientes propiedades:

sonar.projectKey=BookStore (identificador del proyecto, puede elegirlo sin problema)

sonar.projectName=BookStore (nombre del proyecto, puede elegirlo sin problema y será el que verá en la interfaz de Sonar)

sonar.projectVersion=1.0 (la versión de su proyecto)

sonar.sourceEncoding=UTF-8 (el encoding de su proyecto)

sonar.language=js (el lenguage de su proyecto)

sonar.sources=. (deje este campo vacío)

sonar.tests=. (deje este campo vacío)

sonar.test.inclusions=test/** (el path hasta la carpeta donde están sus pruebas JavaScript elaboradas con Mocha y Chai)

sonar.exclusions=test/**, coverage/**, node_modules/**, assets/**, app/controllers/**, app.js, db.js (los directorios y archivos que no quiere que Sonar evalúe)

sonar.javascript.lcov.reportPaths=coverage/lcov.info (el path hasta el archivo lcov generado por Istanbul)

Guarde y ejecute la tarea.

En la consola verá:

Los resultados de las pruebas de Mocha y Chai:

Jenkins-back-nuevatarea
Figura 5: ejecución pruebas de Mocha y Chai

Los resultados de cubrimiento de Istanbul

Jenkins-back-istanbul
Figura 6: resultados de cubrimiento de Istanbul

La ejecución de Sonar

Jenkins-back-sonar
Figura 7: ejecución de Sonar

Conéctese a localhost:9000 o donde haya configurado SonarQube para correr y analice los resultados de cubrimiento de sus pruebas:

Jenkins-back-interfazsonar
Figura 8: interfaz de Sonar