Usa Docker para mejorar tu entorno de pruebas

En el departamento de calidad, debemos tener en cuenta unos conceptos básicos si queremos entender como tratar con Docker en un sistema de Integración contínua. Para empezar, nos hacemos las siguientes preguntas:

¿Que necesitamos para construir un entorno de Integración Continua?:

– Monitorizar el repositorio de código fuente.

– Compilar el producto.

– Pasar los tests automáticos.

– Auditar el código de forma automática.

En un escenario clásico, para cada entorno ( dev, test, uat, prod) tendríamos unas cuantas máquinas virtuales encargadas de hacer todas estas tareas, pero ¿cómo hacer un entorno mucho más ligero, más fácil de escalar y más sencillo de portar?. Con el uso de contendores.

¿Qué es un contenedor Docker?

Docker es una herramienta diseñada para facilitar la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores. Los contenedores permiten a un desarrollador empaquetar una aplicación con todas las partes que necesita, como bibliotecas y otras dependencias, y enviarla en un solo paquete. Al hacerlo, gracias al contenedor, el desarrollador puede estar seguro de que la aplicación se ejecutará en cualquier otra máquina independientemente del sistema Operativo y las configuraciones.

¿Qué es una imagen Docker?

Cada contenedor conforma una imagen, y esta imagen es una sucesión de diversas “capas” o snapshots que se van guardando de forma incremental. Es decir que si a una imagen X le agrego alguna cosa, un paquete por ejemplo, no se guarda toda la imagen incluyendo todos los archivos del sistema operativo sino solo aquello que fue cambiado o agregado, compartiendo con otras imágenes la data que no sea modificada. Es decir podríamos tener diferentes imágenes de ubuntu, una con un webserver nginx y otra con un webserver apache, donde compartan el OS pero difieran en el paquete en si, y según nuestra necesidad circunstancial correr una u otra… o las dos a la vez en paralelo. De esta manera ahorramos enormes cantidades de espacio en disco.

¿Qué es un repositorio Docker?
Un repositorio es una colección de Docker Images.

¿Cómo configuramos JENKINS en un sistema de integración contínua con containers docker?

  • Creación contenedor “master” de Jenkins, que orquestará las tareas. Será el encargado de guardar la configuración y definir las tareas o “jobs“.
  • Creación nodos “agentes” (también conocidos como “esclavos“) que son los que ejecutan las tareas.

Para ir un paso más allá y montar el sistema, te recomiendo que visites:

Como construir un entorno de Integración Continua con Jenkins y Docker
Docker – Trabajando con imagenes