InmobilIV

Intregación continua con Jenkins

Indice

  1. Instalación Jenkins
  2. Configuración Jenkins
  3. Configuración Webhook GitHub
  4. Ejecución correcta CI

1. Instalación Jenkins

El primer paso es instalarlo, en mi caso, mediante la orden:

sudo pacman -S jenkins

Una vez instalado, se puede acceder en la siguiente dirección local:

http://localhost:8090


2. Configuración Jenkins

Al entrar, pedirá una contraseña que habrá generado en una ruta indicada, al introducirla se vera lo siguiente:

jenkins 1

En esta pestaña pulso “Select plugins to install”, donde indicaré que módulos quiero instalar.

En este caso lo dejo igual pero desmarco “Ant” ya que no lo uso y selecciono “Embeddable Build Status” para poder crear un link que muestre el estado desde donde quiera.

Al terminar, se instalara lo seleccionado.

jenkins 2

El ultimo paso sera crear un usuario admin.

jenkins 3

Una vez completado se vera la pagina principal de Jenkins:

jenkins 4

Ahora el paso es conectar GitHub para que obtenga el repositorio, esto se realiza mediante un “pipeline”.

Para esto se pulsa en:

  1. Nueva tarea

jenkins_5

  1. Pipeline (hay que introducir un nombre)

jenkins_6

  1. Configurarlo

jenkins_7

En este apartado hay que marcar en la sección “Build Triggers” lo siguiente:

jenkins_8

De esta forma si se realiza un push, saltará el Trigger.

Bajando un poco mas se podrá definir el repositorio en la sección “Pipeline”, de la forma siguiente:

jenkins_9

En la imagen superior se puede ver como se ha especificado que el repositorio mediante la URL y la rama MASTER.

Ahora hay que añadir un fichero de configuración que se llamara Jekinsfile y que se puede consultar aquí.

El fichero contiene básicamente la orden de construir la imagen docker y ejecutarla ya que voy a aprovechar Docker.


3. Configuración Webhook GitHub

El siguiente paso es añadir un “Webhook” en GitHub, para ello, hay que ir a “Settings” del repositorio y a la opción “Webhooks”.

Aquí viene un problema, y es que Jenkins es un servidor LOCAL que no tiene acceso a internet, por lo que se necesita de una aplicación para crear un túnel entre GitHub y Jenkins, la cual va a ser smee.io.

Primero hay que empezar un channel en la web smee.io, al pulsar sobre el botón, aparecerá una pagina en la que proporcionará una URL y una serie de ordenes.

smee_1

El siguiente paso es instalar el cliente mediante:

npm install –global smee-client

Y después ejecutar el cliente con el código proporcionado mediante la orden:

smee -u https://smee.io/CODIGO –path /github-webhook/ –port 8090

smee_2

Ahora en el webhook de GitHub, hay que introducir la siguiente dirección payload:

smee_3

Y al aceptarlo se vería junto al otro webhook de Docker:

jenkins_10

Una vez que se realize un push o PR, la web donde se ha obtenido el código cambiará y mostrara un historial de las acciones realizadas.

smee_4


4. Ejecución correcta CI

Esto lanzará en Jenkins las tareas, en este caso, la de construir la imagen y ejecutar los test de docker, como se puede ver en la siguiente imagen:

jenkins_11

Si finaliza correctamente aparecerá en verde con el tiempo que ha tardado:

jenkins_12

Si se entra en el log se puede ver que se ha ejecutado correctamente:

  1. Test correctos en docker

jenkins_run