Saltar la navegación

9. Integración y despliegue continuo con Jenkins y docker

Aviso importante
Aviso Importante (No attribution required)

Como ya se comentó en el apartado 6.3 de este mismo curso, la empresa Docker ha eliminado la posibilidad de realizar  "Automated Builds" en las cuentas del plan gratuito.

Eso no afecta a los objetivos de este tema, pero una parte del flujo de trabajo que definamos quedará sin realizarse: La construcción automática de la nueva imagen del contenedor tomando como base el Dockerfile de mi repositorio en DockerHub.

Existen otras herramientas y la posibilidad de realizar esta construcción desde la propio máquina en la que esté instalada Jenkins pero como usaremos Jenkins desde un contenedor no profundizaremos más e indicaremos qué parte se dejará de realizar.

Para acabar el curso vamos a salirnos un poco del tema pero sin salirnos del todo. Pretendo que ,usando contenedores, podamos montar un "pseudo" flujo de despliegue continuo mediante  un servidor Jenkins que lanzaremos desde un contenedor. De esta manera mostraremos otro entorno donde los contenedores son útiles y abriremos el campo de conocimientos demostrando la utilidad de este tipo de conceptos dentro del mundo del desarrollo de software actual.

¿Qué es Jenkins?

Jenkins es un servidor de automatización opensource  que me va a permitir automatizar ciertas partes del proceso de desarrollo de software.  Tiene un sistemas de plugins muy completo que permite integrar en cada una de estas fases herramientas para el control de versiones, construcción de software, testing etc...

Jenkins
https://commons.wikimedia.org/wiki/File:Jenkins_logo_with_title.svg. Jenkins, servidor de automatización (CC BY-SA)

 ¿Pero qué vamos a automatizar?

Una vez hayamos levantado un servicio de Jenkins definiremos un flujo automático (PIPELINE) con las siguientes fases:

  1. PRIMER PASO: Descarga de un código desde un repositorio de GitHub y construcción (build)
  2. SEGUNDO PASO: Simulación de Testing. No entraremos más en esta fase porque no es materia para este curso.
  3. TERCER PASO: Generación de una nueva imagen docker que contenga ese código a través de un fichero Dockerfile que esté conectado con DockerHub. ESTA PARTE NO SE REALIZARÁ. ÚNICAMENTE HAREMOS "PUSH" EN GITHUB. EL PROCESO DE GENERACIÓN AUTOMÁTICA REQUIERE DE UN PLAN DE PAGO.
  4. CUARTO PASO: Despliegue del código en un servidor que serán también un contenedor.

Este flujo es un flujo ad-hoc para este  curso que no responde exactamente a las definiciones generales que  vamos a presentar en el próximo apartado, pero nos va a servir para repasar conceptos que hemos visto a la vez que nos introducimos en el mundo de la automatización.