Pipeline en Jenkins para un microservicio Java - Etapas Image y Deploy
por Juan Felipe Becerra, el 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