http://cdn-images-1.medium.com/max/1200/1*RmcSmwPhUn8ljLiiwYxK0A.png

Jenkins + Pipeline + Docker. Cómo desplegar contenedores por fases

En un post anterior, os mostré cómo instalar y desplegar contenedores con docker, usando Gitbucket, como repositorio y Dockerfiles, con comandos ssh.

En este post, os mostraré como desplegarlos, con pipelines.

¿Y qué son los pipelines? En la documentación de jenkins, nos indican lo siguiente:

Jenkins Pipeline (or simply «Pipeline» with a capital «P») is a suite of plugins which supports implementing and integrating continuous delivery pipelines into Jenkins.

A continuous delivery (CD) pipeline is an automated expression of your process for getting software from version control right through to your users and customers. Every change to your software (committed in source control) goes through a complex process on its way to being released. This process involves building the software in a reliable and repeatable manner, as well as progressing the built software (called a «build») through multiple stages of testing and deployment.

Resumiendo, un pipeline es una nueva forma de trabajar en el mundo devops en la integración continua. Utilizando pipeline y Jenkins, podemos definir el ciclo de vida completo de una aplicación (descargar código, compilar, test, desplegar, etc.) mediante código.

Osea, esto.!

http://chechy.xyz/wp-content/uploads/2019/02/word-image-22.png

Ahora, nos ponemos manos a la obra.

Creamos una nueva tarea, en nuestro Jenkins

http://chechy.xyz/wp-content/uploads/2019/02/word-image-23.png

Le damos un nombre al job y seleccionamos Pipeline

http://chechy.xyz/wp-content/uploads/2019/02/word-image-24.png

En esta Pipeline, solo tenemos que configurar los parámetros de la Pipeline, qué es la url del repositorio, usuario, contraseña y el path del script, en este caso, nuestro Jenkinsfile.

http://chechy.xyz/wp-content/uploads/2019/02/word-image-25.png

Una vez guardado y pulsado en construir ahora, vemos que realiza los pasos indicados en el Jenkinsfile

http://chechy.xyz/wp-content/uploads/2019/02/word-image-26.png

Todos estos pasos, los veremos ahora, viendo mi Jenkinsfile, para este grupo de 5 contenedores.

El contenido es el siguiente:

C:\Users\spereza\Desktop\word-image-27-1024x541.pnghttp://chechy.xyz/wp-content/uploads/2019/02/word-image-28.png

Al principio del fichero, le indicamos a Jenkins, el nombre del servidor, ip, usuario, password y que ejecute los comandos en un host remoto.

1º Borra los contenedores actuales: 

stage('Borrado de contenedores antiguos')

2º Hace docker login, para descargar la imagen del registry local (Harbor):

stage('Nos logamos en el registry')

3º Clona el repositorio, con todo lo que necesita:

stage('Clona el repositorio de Github')

4º Construye la imagen, usando el Dockerfile del repositorio y descargando la imagen base, de Harbor.

stage('Construye la imagen')

5º Escanea la nueva imagen en busca de vulnerabilidades con Clair

stage('Escaner de vulnerabilidades')

6º Despliega 5 contenedores

stage('Despliega los contenedores x5')

7º Borra el contenido del repositorio local (ahorramos espacio )

stage('Borrado del repositorio git local')

8º Borra la imagen base descargada de Harbor (volvemos con el ahorro de espacio, soy catalán XD)

stage('Borrado de imagen temporal')

El resultado, el que os he mostrado al principio

http://chechy.xyz/wp-content/uploads/2019/02/word-image-29.png

En portainer, vemos que ya los tenemos construidos y corriendo

http://chechy.xyz/wp-content/uploads/2019/02/word-image-30.png

Lo mismo nos muestra un docker ps

http://chechy.xyz/wp-content/uploads/2019/02/word-image-31.png

Y con esto, nos olvidamos de teclear demasiados comandos y automatizar despliegues, centralizando todo en un solo lugar (con esto, los de desarrollo os harán un monumento, como a mí :P)

http://pbs.twimg.com/media/DXxZPHrWkAA8NyC.jpg

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.