Estrategia de Repositorios y Branching
1. Estrategia de Branching (GitFlow Adaptado)
La organización adopta un modelo de GitFlow modificado para sincronizarse de manera eficiente con los entornos de ejecución (DEV, UAT, PROD).
main: Contiene el código de producción. Solo recibe fusiones de ramasrelease/*ohotfix/*.release/v*.*.*: Ramas de congelamiento de código destinadas a pruebas en el entorno de UAT.develop: Rama principal de integración para el entorno de desarrollo.feature/*: Desarrollo de nuevas capacidades. Nace dedevelopy se reintegra adevelop.hotfix/*: Corrección de errores críticos en producción. Nace demainy se integra de inmediato amainydevelop.bugfix/*: Parche de bugs detectados durante el ciclo de pruebas en UAT. Nace derelease/*y se reintegra a la misma.
Flujo de trabajo
Desarrollo (DEV) → Certificación (UAT) → Producción (PROD)
feature/*
│
▼
develop (DEV)
│
▼
release/v1.0.0 (UAT)
│
├── bugfix/*
│ │
│ ▼
└────────┘
│
▼
release/v1.0.0
│
▼
main (PROD)
│
└── hotfix/*
│
├──► main
├──► develop
└──► release (si existe)
Flujo operativo
1. Desarrollo
- Cada nueva funcionalidad se desarrolla en una rama
feature/*. - La rama
feature/*siempre se crea a partir dedevelop. - Una vez concluido el desarrollo y aprobada la revisión de código, se fusiona nuevamente en
develop.
2. Integración (DEV)
- La rama
developrepresenta el ambiente de Desarrollo (DEV). - Aquí se integran todas las funcionalidades aprobadas.
- Se ejecutan validaciones automáticas mediante los pipelines de CI/CD.
3. Certificación (UAT)
- Cuando la versión está lista para certificación se crea una rama:
release/vX.Y.Z
- Semántica de Versionado (Semantic Versioning)
vX.Y.Z
│ │ │
│ │ └── Z = Patch (Corrección de errores o ajustes menores)
│ └──── Y = Minor (Nuevas funcionalidades compatibles)
└────── X = Major (Cambios mayores o incompatibles)
| Elemento | Nombre | Descripción |
|---|---|---|
| v | Prefijo de versión | Indica que el identificador corresponde a una versión del software. |
| X | Major | Se incrementa cuando existen cambios importantes o incompatibles con versiones anteriores (breaking changes). |
| Y | Minor | Se incrementa cuando se agregan nuevas funcionalidades sin afectar la compatibilidad con versiones anteriores. |
| Z | Patch | Se incrementa cuando únicamente se corrigen errores, vulnerabilidades o se realizan ajustes menores sin agregar nuevas funcionalidades. |
Ejemplo:
release/v1.4.0
Durante esta etapa:
- No se agregan nuevas funcionalidades.
- Solo se permiten correcciones de errores detectados durante UAT.
- Todas las correcciones se realizan mediante ramas
bugfix/*.
Ejemplo:
bugfix/error-calculo-impuestos
Estas ramas:
- nacen desde
release/* - regresan únicamente a
release/*
4. Liberación a Producción
Una vez obtenidas todas las aprobaciones funcionales y técnicas:
- La rama
release/*se fusiona haciamain. - Se genera el tag correspondiente de versión.
- Se despliega al ambiente de Producción.
Ejemplo:
release/v1.4.0
│
▼
main
5. Correcciones urgentes (Hotfix)
Cuando se presenta un incidente crítico en Producción:
- Se crea una rama
hotfix/*desdemain.
Ejemplo:
hotfix/error-facturacion
-
Se desarrolla y valida la corrección.
-
Una vez aprobada, el cambio debe fusionarse en:
maindeveloprelease/*(si existe una versión abierta en UAT)
Esto garantiza que todos los ambientes permanezcan sincronizados y evita que una corrección de Producción se pierda en futuras liberaciones.
Reglas generales
- Todo cambio debe realizarse mediante Merge Request (MR).
- No se permiten cambios directos sobre las ramas protegidas.
- Todo Merge Request debe contar con las aprobaciones definidas por la organización.
- Todos los Merge Request deben ejecutar exitosamente el pipeline de CI/CD antes de ser aprobados.
- Las ramas
main,developyrelease/*deben permanecer protegidas. - Las ramas
feature/*,bugfix/*yhotfix/*son temporales y deberán eliminarse una vez completada su integración.
Beneficios del modelo
- Separación clara entre Desarrollo, Certificación y Producción.
- Mayor estabilidad durante las pruebas de UAT.
- Reducción del riesgo de liberar funcionalidades no certificadas.
- Correcciones controladas durante la fase de certificación.
- Sincronización entre todos los ambientes mediante el flujo de
hotfix. - Mejor trazabilidad de cambios y versiones.
- Facilita auditorías y control de versiones.
- Compatible con estrategias de CI/CD, GitOps y despliegues automatizados.
Resumen del flujo
+----------------+
| feature/* |
+-------+--------+
|
▼
+----------------+
| develop |
| DEV |
+-------+--------+
|
▼
+--------------------+
| release/vX.Y.Z |
| UAT |
+---------+----------+
▲
│
+-------+--------+
| bugfix/* |
+----------------+
|
▼
+----------------+
| main |
| PROD |
+-------+--------+
▲
│
+-------+--------+
| hotfix/* |
+----------------+
│
┌──────────────┼──────────────┐
▼ ▼ ▼
main develop release/*