Este repositorio es un ejemplo práctico y avanzado de cómo configurar un ecosistema profesional de CI/CD (Integración y Despliegue Continuos) para aplicaciones Python. Incluye validaciones automatizadas, pruebas unitarias, análisis de calidad de código y empaquetado en contenedores Docker.
| Archivo / Directorio | Descripción |
|---|---|
.github/workflows/ |
Automatización de pipelines con GitHub Actions |
app.py |
Punto de entrada y lógica principal de la aplicación |
test_app.py |
Pruebas unitarias usando pytest |
run_linter.sh |
Script para análisis estático y calidad de código |
Dockerfile |
Definición de la imagen Docker |
requirements.txt |
Dependencias necesarias en producción |
requirements-dev.txt |
Dependencias de desarrollo, testing y linting |
Se recomienda utilizar un entorno virtual para evitar conflictos de dependencias.
Clonar el repositorio:
git clone https://github.com/atxpaul/python-app-pipeline-example-advanced.git
cd python-app-pipeline-example-advanced
Crear y activar el entorno virtual:
python -m venv venv
source venv/bin/activate # Linux / macOS
.\venv\Scripts\activate # Windows
Instalar dependencias:
pip install -r requirements.txt
pip install -r requirements-dev.txt
python app.py
El proyecto está orientado a mantener estándares de calidad altos desde el inicio.
Ejecutar tests con pytest:
pytest test_app.py
Ejecutar el script de linting:
bash run_linter.sh
La aplicación puede empaquetarse y ejecutarse de forma consistente mediante Docker.
Construir la imagen:
docker build -t python-app-advanced .
Ejecutar el contenedor:
docker run --rm python-app-advanced
El workflow de GitHub Actions se ejecuta automáticamente en cada push y pull_request y cubre los siguientes pasos:
- Setup del entorno Python
- Instalación de dependencias
- Análisis de calidad de código (linting)
- Ejecución de pruebas unitarias
- Validación de que el proyecto está listo para un despliegue seguro
Este enfoque asegura que cualquier cambio en el repositorio pasa por las mismas validaciones que en un entorno profesional.
Este proyecto se distribuye bajo licencia MIT.