Code Monkey home page Code Monkey logo

node-jenkins's Introduction

Servidor Jenkins en Rasperry Pi

ℹ️ 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.

❗ Requisitos:

  1. Tener una raspberry Pi con un SO GNU/Linux (Este ejemplo fue realizado con Raspbian).

    🔗 Como instalar Raspbian en tu Raspberri

  2. 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).

    🔗Como abrir el puerto SSH en tu Raspberry

  3. Tener instalado Jenkins en la Raspberry

    🔗 Como instalar Jenkins en tu Raspberry

📝Pasos a seguir:

  1. 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.

  2. 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.

  3. 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

  4. 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".

  5. 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.

  6. 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.

  7. 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.

👁️ ​ANÁLISIS DEL JENKINSFILE 👁️

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'
      }
    }      
  }
}

node-jenkins's People

Contributors

diegoxlus avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

anish-28

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.