Lineamientos para el manejo de dependencias en servicios Python
Introducción
Para garantizar la calidad, seguridad y estabilidad de los servicios Python desplegados a través de Jenkins, es fundamental gestionar correctamente las dependencias del proyecto. Este documento establece los lineamientos y mejores prácticas recomendadas para el manejo de dependencias, así como la responsabilidad del equipo de desarrollo en este proceso.
Estándares de dependencias
📌 Uso de requirements.txt
Todas las dependencias deben estar declaradas en el archivo requirements.txt. Esto es esencial para la instalación automatizada y la reproducibilidad de los entornos en Jenkins.
📌 Gestión de versiones
Es importante fijar la versión exacta de cada dependencia (ejemplo: requests==2.31.0). Definir versiones específicas ayuda a evitar incompatibilidades, errores inesperados y problemas de seguridad.
📌 Selección de dependencias Limita las dependencias a lo estrictamente necesario. No incluyas librerías que no aportan valor directo al proyecto. Esto mejora la seguridad, acelera los despliegues y reduce el tamaño final del artefacto.
📌 Verificación de licencias Antes de agregar un paquete, revisa que su licencia sea compatible con las políticas de la organización.
Buenas prácticas
✅ Revisión de seguridad El flujo CI/CD en la herramienta jenkins cuenta con un escaneo de seguridad, recuerda revisarlo y tomar las medidas necesarias para cumplir con la calidad de entregable.
✅ Aprovechar la biblioteca estándar Evalúa si la funcionalidad que buscas ya existe en la librería estándar de Python antes de añadir un paquete externo.
✅ Entornos virtuales Trabaja siempre con entornos virtuales durante el desarrollo para evitar conflictos y asegurar consistencia en el entorno de ejecución.
✅ Documentación de cambios Cuando actualices o agregues dependencias, registra estos cambios en el repositorio y verifica su funcionamiento mediante pruebas.
Ejemplo de requirements.txt
Flask==2.3.3
requests==2.31.0
gunicorn==21.2.0Recomendaciones para la gestión de dependencias
-
Antes de agregar una dependencia
- Confirma que no esté ya incluida en el proyecto.
- Consulta la documentación y verifica la licencia.
- Evalúa vulnerabilidades conocidas para la versión empleada o futura.
-
Al actualizar dependencias
- Realiza pruebas para asegurar la compatibilidad.
- Documenta cambios importantes en el repositorio.
Consideraciones en el despliegue Jenkins
- Jenkins instalará únicamente las dependencias listadas en
requirements.txt. - Es responsabilidad del desarrollador asegurar que todas las dependencias necesarias estén declaradas y sean compatibles entre sí.
- Cualquier problema derivado de dependencias incorrectas, incompatibles o no declaradas podrá afectar el despliegue y operación del servicio.
Estos lineamientos buscan facilitar el trabajo mutuamente benefioso, asi como mantener servicios seguros, eficientes y sostenibles a lo largo del tiempo.