Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:docker_avanzado:integracion_continua_y_testing_con_docker

Integración Continua y Testing con Docker (Docker avanzado)

Contenido perteneciente al curso Docker avanzado.

Integración continua

La integración continua es una práctica de ingeniería de software que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes.

u Entendemos por integración la compilación y ejecución de pruebas de todo un proyecto.

El proceso de test se suele hacer cada cierto tiempo:

  • De forma periódica
  • En base a eventos (por ejemplo, commit)

El proceso consiste en:

  • Se descarga el código fuente del control de versiones
  • Se compila
  • Se ejecutan las pruebas
  • Se generan los informes

Para la automatización de este proceso existen multitud de herramientas. Algunas son independientes de la tecnología del desarrollo y otras están ligadas al desarrollo:

  • Apache Continuum
  • Hudson
  • Jenkins
  • CruiseControl

Estas herramientas habitualmente se apoyan en otras herramientas como Ant o Maven

Estos procesos se suelen asociar a metodologías de programación extrema o desarrollo ági

Ventajas

Se pueden detectar, y solucionar, los errores de integración en fases tempranas de desarrollo. Evitando el caos de los fallos a última hora

Disponibilidad constante de versiones para probar, enseñar a los interesados, hacer demostraciones, etc

Ejecución inmediata de las pruebas unitarias

Monitorización continua de las métricas de calidad del proyecto

TDD

Desarrollo guiado por pruebas de software, o Test-driven development (TDD) es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring).

Jenkins

Jenkins es un servidor de automatización open source escrito en Java

Está basado en el proyecto Hudson

Ayuda en la automatización de parte del proceso de desarrollo de software mediante integración continua y facilita ciertos aspectos de la entrega continua

Tiene integración con la mayoría de los sistemas de controles de versiones

Puede ejecutar proyectos basados en Ant y Maven

También puede ejecutar comandos en terminales

Dispone de plugins para ampliar y mejorar su funcionalidad

En este caso el que nos interesa es el plugin de Docker. Este plugin nos permite integrarnos con un Docker Server para poder generar contenedores a demanda del pipeline

Ejemplo: https://medium.com/@karthi.net/docker-tutorial-build-docker-images-using-jenkins- d2880e65b74#:~:text=On%20the%20Jenkins%20Dashboard%2C%20select,Select%20Docker%20from%20the%20list.

Docker Hub - GitHub

Podemos integrar GitHub con Docker Hub para generar las imágenes de forma automática

Para ello, Docker Hub nos provee de la opción de los build automáticos: https://docs.docker.com/docker-hub/builds/

Caso de estudio

Aquí podemos ver un ejemplo real de las diferentes piezas que podrían hacer falta para lograr una infraestructura 100% flexible y escalable siguiendo los principios de la integración continua y Docker: https://es.slideshare.net/Synerzip/running-microservices-on-docker

Práctica

Vamos a hacer una instalación de un Jenkins y explorar un poco sus plugins y sus posibilidades

informatica/sistemas_operativos/cursos/docker_avanzado/integracion_continua_y_testing_con_docker.txt · Última modificación: por tempwin