Este repositorio contiene un proyecto sencillo diseñado para demostrar conceptos fundamentales relacionados con:
- ✅ Pruebas unitarias
- ✅ Pruebas de servicio
- ✅ Uso de Wiremock
- ✅ Pruebas de rendimiento
- ✅ Integración en un pipeline de Jenkins
El objetivo principal es facilitar el aprendizaje de estos conceptos, por lo que el código ha sido intencionadamente simplificado.
Este proyecto implementa una API RESTful utilizando Python + Flask para realizar operaciones matemáticas básicas. Se encuentra dockerizado, lo que facilita su despliegue en distintos entornos y su integración en un pipeline CI/CD con Jenkins.
- Requisitos
- Instalación y Ejecución
- Uso de la API
- Integración con Jenkins
- Características
- Dependencias
- Configuración
- Ejemplos
- Contribuidores
- Licencia
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Docker
- Docker Compose
- Git
git clone <URL_DEL_REPOSITORIO>
cd <nombre_del_repositorio>docker build -t my-flask-api .docker-compose up --build -decho "La API está corriendo en http://localhost:5000"- ➕ Suma: GET /calc/add/{op1}/{op2}
- ➖ Resta: GET /calc/substract/{op1}/{op2}
- ✖️ Multiplicación: GET /calc/multiply/{op1}/{op2}
- ➗ División: GET /calc/divide/{op1}/{op2}
Asegúrate de tener un contenedor de Jenkins en funcionamiento. Accede desde:
- El pipeline está preparado para realizar:
- Construcción del proyecto
- Ejecución de pruebas unitarias y de servicio
- Despliegue automático de la aplicación
Los datos de Jenkins se almacenan en un volumen (jenkins_home) para conservar la configuración entre reinicios.
Antes de ejecutar el pipeline con agentes:
- Configura los agentes desde el nodo master en Jenkins.
- Añade el secret key correspondiente en las variables de entorno de cada agente para permitir la conexión.
- Asegúrate de que todos los contenedores estén en la misma red Docker para permitir la comunicación.
- API RESTful simple en Flask
- Pruebas unitarias y de servicio integradas
- Soporte para pruebas con Wiremock
- Desplegable vía Docker y Docker Compose
- Pipeline de CI/CD automatizado con Jenkins
- Python 3.8+
- Flask
- pytest
- Wiremock (para pruebas de servicio)
- Docker / Docker Compose
- Jenkins
- Las variables de entorno relevantes deben configurarse en los contenedores de Jenkins y la API si es necesario.
- Asegúrate de exponer correctamente los puertos:
- API: 5000
- Jenkins: 8080
curl http://localhost:5000/calc/add/10/5
# Resultado: {"operation": "add", "result": 15}Distribuido bajo licencia educativa para uso no comercial y académico.