Versionamiento semántico y GitFlow en Python

Clase 3 de 22Curso de Despliegue de Aplicaciones Python en la Nube

Resumen

Controlar versiones con versionamiento semántico y organizar ramas con GitFlow te da estabilidad y velocidad en despliegues. Aquí aprenderás a leer versiones como 1.0.0, crear tags con Git para deployment, y mover cambios entre Main/Master, Develop, Feature y HotFix sin romper producción.

¿Qué es el versionamiento semántico y cómo se aplica en Python?

El versionamiento semántico en Python usa el formato X.Y.Z para comunicar el tipo de cambio sin revisar el código. Con esto, cualquier persona del equipo entiende el impacto de un lanzamiento y decide si es seguro actualizar.

  • Major (X): cambios incompatibles. Ejemplo: 1.0.0 a 2.0.0. Rompe compatibilidad.
  • Minor (Y): nuevas funcionalidades compatibles. Ejemplo: 1.0.0 a 1.2.0. No rompe versiones anteriores.
  • Patch (Z): correcciones puntuales. Ejemplo: 2.0.0 a 2.0.1. Soluciona errores urgentes en producción.
  • Palabras clave: Semantic Version, estabilidad, compatibilidad, deploy, producción, staging.

¿Cómo se interpreta major, minor y patch?

  • Major sube cuando “algo cambió” y la versión anterior deja de ser compatible. Útil para cambios profundos.
  • Minor sube cuando agregas funciones sin dañar lo existente. Ideal para deploys sin riesgos altos.
  • Patch sube cuando corriges errores en producción rápidamente. Pequeño alcance, impacto controlado.

¿Cómo crear tags en Git para deployments?

Las versiones estables se publican con tags. Tu sistema de deployment puede traer exactamente esa versión.

git tag -a 1.0.0 -m "Lanzamiento de la versión 1.0.0"
git push
  • Crea un tag anotado con -a y comenta el objetivo con -m.
  • Disponible en GitHub u otro remoto para referenciar en producción o staging.
  • Mejora trazabilidad: sabes qué código llegó a qué entorno.

¿Cómo organizar ramas con GitFlow para despliegues seguros?

Con GitFlow separas trabajo en curso de versiones listas. Esto evita mezclar cambios inestables con producción.

¿Qué rol tienen Main/Master y Develop?

  • Main/Master: historia de producción. Cada release se marca con tag y se despliega.
  • Develop: base estable de desarrollo. Permite que el equipo integre sin romper el flujo.
  • Buenas prácticas del flujo: versiones se “taguean” en Master/Main tras cada release.

¿Cómo trabajar features sin romper la estabilidad?

  • Crea ramas de Feature desde Develop para nuevos cambios. Ejemplo: feature/login.
  • Integra a Develop solo cuando el feature esté estable. Así mantienes la rama lista para otros.
  • Beneficio: nuevas funcionalidades llegan en Minor sin afectar producción.

¿Cómo atender un HotFix urgente en producción?

  • Crea una rama HotFix desde Main, repara el error y regresa a Master/Main.
  • Despliega de inmediato con un Patch (ejemplo: 2.0.1) para resolver el incidente rápido.
  • Luego copia y mezcla el arreglo también en Develop para no perder el fix.

¿Cómo integrar cambios y preparar releases?

El ciclo cierra cuando sincronizas lo que desarrolla el equipo con producción, manteniendo todo estable.

¿Qué pasa con Develop tras un HotFix?

  • Los ajustes hechos en Main no llegan solos a Develop.
  • Debes copiar y mezclar manualmente hacia Develop para que el equipo continúe con la base correcta.

¿Cuándo mezclar Develop en Main y desplegar?

  • Al terminar un ciclo de releases, mezcla Develop en Main.
  • Marca versión con tag y despliega a producción. Así, ese feature (por ejemplo, el login) queda disponible.

¿Qué habilidades y conceptos refuerzas?

  • Lectura de versionamiento semántico: identificar Major, Minor, Patch.
  • Gestión de branches con GitFlow: Main/Master, Develop, Feature, HotFix.
  • Uso de etiquetas en Git: comando git tag, mensajes claros y push.
  • Estrategias de despliegue: producción estable y staging para pruebas.

¿Qué acción práctica puedes ejecutar ahora?

  • Crea una nueva aplicación y agrega etiquetas de versión.
  • Maneja versions con X.Y.Z siguiendo el impacto del cambio.
  • Crea ramas Develop, Feature y HotFix según el flujo de trabajo.

¿Tienes un flujo diferente o dudas con tags y branches? Cuéntalo en los comentarios y comparte tu experiencia con GitFlow y Semantic Version en proyectos de Python.

      Versionamiento semántico y GitFlow en Python