Lecciones

Pipeline en Jenkins para un microservicio Java -Etapas Image y Deploy

Escrito por Juan Felipe Becerra | 6 de julio de 2020

Continuamos con las Lecciones para la construcción de una Pipeline en Jenkins para un microservicio Java. Ya vimos la primera parte de la Etapa Build y la segunda etapa Scan. En esta tercera entrega veremos la etapa Image y haremos el Stage Deploy. 

Recuerda que para realizar esta Lección se debe tener lista la configuración inicial de Jenkins, sigue los pasos que te proporcionamos en la Lección Cómo instalar Jenkins utilizando Docker, que se enfoca en los ajustes previos para poder empezar utilizar Jenkins.

Para realizar el despliegue primero debemos construir una imagen con nuestro proyecto, para esto vamos a comenzar agregando nuestras credenciales de docker hub dentro de jenkins pues las necesitaremos más adelante.

Stage: Image

Instalación docker daemon

La imagen será creada desde el pipeline, por lo tanto, necesitamos poder ejecutar los comandos desde nuestro ambiente en Jenkins

1. Onten el ID de nuestro contenedor de jenkins ejecutando en la consola docker ps

2. Ahora ingresa al contenedor con el siguiente comando

docker exec -ti -u root IDCONTENEDOR bin/bash

Una vez estés dentro del contenedor vas a ejecutar los siguientes comandos uno por uno, comenzando por apt-get update

Continúa con estos de manera secuencial

apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common

curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
apt-get update

apt-get -y install docker-ce

Al finalizar verifica la versión de docker

Configuración Jenkins

1. Accedemos a la opción “Credentials” seleccionamos la credencial principal “System” seguida de la opción “Global credentials” y encontraremos la opción para agregar una nueva credencial.

Si aún no tienes una en cuenta en docker puedes crearla acá, será necesaria para almacenar nuestra imagen en un repositorio más adelante.

Te recomendamos usar el ID dockerhub dentro de tu credencial, para que puedas identificarla y referenciarla de manera más sencilla.

2. Crea un repositorio dentro de tu dockerhub, a este le daremos un uso específico durante esta práctica

Configuración pipeline

Por último dirígete a la sección del script del pipeline

1. Dentro de las variables de entorno agrega dos más, correspondientes al repositorio de docker hub que previamente creaste y al ID de las credenciales, deberás tener algo como esto con tus datos

environment {
                PRAGMA_USER = "maria.ocampo"
                PROJECT_ROOT = "practica-devops"
                EMAIL_ADDRESS = "maria.ocampo@pragma.com.co"
                REGISTRY = "maria33/devops"
                REGISTRY_CREDENTIAL = "dockerhub"
}

2. Ahora agrega el nuevo stage, justo posteriormente al stage scan

stage("build-image"){
             steps{
                                          sh "docker build -t ${REGISTRY}:${BUILD_NUMBER} ."
              }
}

Por último clic en Apply y finalmente en Guardar.

Ahora, al ejecutar el pipeline tendrás la nueva etapa, accede al log para que puedas validar la creación de la imagen

Podemos validar la creación de la imagen con un docker images desde la consola de la máquina

Stage: Deploy

Para finalizar agregaremos una última etapa a nuestro pipeline

stage("deploy") {
                   steps {
                              sh "docker run -p 8090:8090 ${REGISTRY}:${BUILD_NUMBER}"
               }docker
          }

Construye el pipeline con este último cambio, observa la consola para que hagas seguimiento a su paso a paso. Finalmente valida la creación del contenedor con tu aplicación:

Puedes consumir sus servicios desde una prueba rápida por medio de postman