Proceso de Control de Versiones
Lineamientos para la gestión de versiones del software.
Quieres aprender más?
Descarga el Kit de Ciberseguridad.
📋 Información General
Documento: Proceso de Control de Versiones
Versión: 1.0.0
Fecha: Enero 2025
Clasificación: Confidencial
Audiencia: Desarrolladores, DevOps Engineers, Arquitectos de Software, QA Team, Project Managers
🎯 Propósito
Establecer los lineamientos para la gestión, control y seguimiento de versiones de código fuente, documentación y artefactos de software en DivisionCero, garantizando la integridad, trazabilidad y colaboración efectiva en el desarrollo de aplicaciones y sistemas.
🏢 Alcance
Esta política aplica a:
- Todo el código fuente de aplicaciones desarrolladas internamente
- Scripts de automatización e Infrastructure as Code
- Documentación técnica y de arquitectura
- Configuraciones de sistemas y aplicaciones
- Schemas de bases de datos y migraciones
- Assets de frontend (CSS, JavaScript, imágenes)
- Artefactos de CI/CD y deployment
📚 Definiciones
- Control de Versiones: Sistema que registra cambios en archivos a lo largo del tiempo
- Repository (Repo): Espacio centralizado donde se almacena y gestiona el código
- Branch: Línea de desarrollo independiente que permite trabajo paralelo
- Commit: Snapshot de cambios con mensaje descriptivo y metadata
- Merge: Proceso de integrar cambios de una branch a otra
- Tag: Marca que identifica un punto específico en la historia del repositorio
🛡️ Política
Sistemas de Control de Versiones Aprobados
Sistema Principal: Git
Plataformas Autorizadas:
- GitHub Enterprise (repositorios privados corporativos)
- GitLab (instancia self-hosted para proyectos críticos)
- Azure DevOps (integración con ecosistema Microsoft)
Características Requeridas:
- Autenticación multifactor obligatoria
- Integración con Active Directory corporativo
- Logs de auditoría completos
- Capacidades de backup y disaster recovery
Sistemas Complementarios
Subversion (SVN): Solo para proyectos legacy en proceso de migración Perforce: Para assets binarios grandes (diseño, multimedia)
Estructura de Repositorios
Clasificación por Criticidad
Repositorios Críticos:
- Aplicaciones de producción con datos de clientes
- APIs y servicios core de negocio
- Infrastructure as Code para entornos productivos
- Sistemas de seguridad y monitoreo
Repositorios Estándar:
- Aplicaciones internas y herramientas
- Scripts de automatización no críticos
- Proyectos de investigación y desarrollo
- Documentación y wikis
Nomenclatura Estándar
Formato de Nombres:
[tipo]-[proyecto]-[componente]
Ejemplos:
- app-customer-portal
- api-payment-service
- infra-production-terraform
- docs-security-policies
Tipos Permitidos:
app
: Aplicaciones web y móvilesapi
: APIs y microservicioslib
: Librerías y componentes reutilizablesinfra
: Infrastructure as Codedocs
: Documentación técnicatools
: Herramientas y scripts internos
Estrategia de Branching
GitFlow para Proyectos Críticos
Branches Principales:
- main/master: Código de producción, siempre estable
- develop: Integración de nuevas funcionalidades
- release/x.y.z: Preparación de releases específicos
- hotfix/descripcion: Correcciones urgentes a producción
Branches de Trabajo:
- feature/TICKET-descripcion: Nuevas funcionalidades
- bugfix/TICKET-descripcion: Corrección de bugs
- chore/descripcion: Tareas de mantenimiento
GitHub Flow para Proyectos Ágiles
Estructura Simplificada:
- main: Branch principal, siempre deployable
- feature/descripcion: Branches de trabajo temporal
- Integración directa vía Pull Requests
Convenciones de Commits
Formato Estándar de Mensajes
Estructura Obligatoria:
<tipo>(<scope>): <descripción breve>
<descripción detallada opcional>
<footer opcional con referencias a tickets>
Tipos de Commit:
feat
: Nueva funcionalidadfix
: Corrección de bugdocs
: Cambios en documentaciónstyle
: Cambios de formato sin afectar lógicarefactor
: Refactorización de códigotest
: Adición o modificación de testschore
: Tareas de mantenimiento
Ejemplos Válidos:
feat(auth): add two-factor authentication support
Implement TOTP-based 2FA for user accounts with backup codes
and recovery options. Includes unit tests and documentation.
Closes #AUTH-123, #AUTH-124
fix(payment): resolve timeout issue in credit card processing
Increase timeout from 30s to 60s and add retry logic for
temporary payment gateway failures.
Fixes #PAY-456
Reglas de Calidad
Validaciones Automáticas:
- Mensaje no puede estar vacío
- Primera línea máximo 72 caracteres
- Tipo debe ser uno de los permitidos
- Debe referenciar ticket cuando aplique
Gestión de Branches
Protección de Branches Críticas
Branch Protection Rules para main/master:
- Require pull request reviews (mínimo 2 aprobaciones)
- Dismiss stale reviews when new commits are pushed
- Require status checks to pass (CI/CD, tests, security scans)
- Require branches to be up to date before merging
- Restrict pushes that create new commits
Revisores Obligatorios:
- Al menos un Senior Developer o Tech Lead
- Code owner del área afectada (CODEOWNERS file)
- Security review para cambios en autenticación/autorización
Proceso de Pull Requests
Checklist de PR (template obligatorio):
## Descripción
Breve descripción de los cambios realizados
## Tipo de cambio
- [ ] Bug fix (cambio que corrige un issue)
- [ ] Nueva funcionalidad (cambio que añade funcionalidad)
- [ ] Breaking change (fix o feature que causa cambios incompatibles)
- [ ] Documentación (cambios solo en documentación)
## Testing
- [ ] Tests unitarios pasan
- [ ] Tests de integración pasan
- [ ] Testing manual completado
## Security
- [ ] No introduce vulnerabilidades conocidas
- [ ] Cumple con políticas de seguridad
- [ ] Secrets/credentials no están hardcoded
## Checklist
- [ ] Código sigue convenciones del proyecto
- [ ] Self-review completado
- [ ] Documentación actualizada si es necesario
Versionado Semántico
Esquema de Versionado (SemVer)
Formato: MAJOR.MINOR.PATCH
- MAJOR: Cambios incompatibles en API
- MINOR: Nueva funcionalidad compatible hacia atrás
- PATCH: Bug fixes compatibles hacia atrás
Ejemplos:
1.0.0
→1.0.1
(bug fix)1.0.1
→1.1.0
(nueva funcionalidad)1.1.0
→2.0.0
(breaking changes)
Pre-releases y Builds
Sufijos Permitidos:
alpha
: Versión muy temprana, no establebeta
: Versión feature-complete, en testingrc
: Release candidate, casi lista para producción
Ejemplos:
2.0.0-alpha.1
2.0.0-beta.3
2.0.0-rc.1
Tagging de Releases
Convenciones de Tags:
# Tags de release
git tag -a v1.2.3 -m "Release version 1.2.3"
# Tags con notas de release
git tag -a v1.2.3 -m "Release 1.2.3
- feat: Add user dashboard
- fix: Resolve login timeout issue
- docs: Update API documentation"
Seguridad en Repositorios
Gestión de Secrets
Prohibiciones Estrictas:
- Passwords, API keys, tokens en código fuente
- Certificados y llaves privadas
- Strings de conexión con credenciales
- Información personal identificable (PII)
Herramientas de Detección:
- GitHub Secret Scanning habilitado
- Pre-commit hooks con detección de secrets
- GitLeaks o TruffleHog en CI/CD pipeline
- Alertas automáticas para commits sospechosos
Gestión de Dependencias
Scanning de Vulnerabilidades:
- Dependabot o Renovate para actualizaciones automáticas
- Snyk o OWASP Dependency Check en CI/CD
- License compliance checking
- Alertas de seguridad de GitHub habilitadas
Políticas de Dependencias:
- Solo dependencias de fuentes confiables
- Aprobación requerida para nuevas dependencias críticas
- Actualización regular de dependencias de seguridad
- Documentación de rationale para dependencias específicas
Integración con CI/CD
Hooks y Automatización
Pre-commit Hooks:
- Linting de código (ESLint, PyLint, etc.)
- Formateo automático (Prettier, Black)
- Detección de secrets
- Validación de mensajes de commit
Post-commit Actions:
- Ejecución automática de tests
- Build y empaquetado de artefactos
- Security scanning (SAST/DAST)
- Deployment automático a entornos de testing
Pipeline de Calidad
Checks Obligatorios:
# Ejemplo GitHub Actions
name: Quality Pipeline
on: [push, pull_request]
jobs:
code-quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run linter
run: npm run lint
- name: Run tests
run: npm run test
- name: Security scan
run: npm audit
- name: License check
run: npm run license-check
Backup y Disaster Recovery
Estrategia de Backup
Repositorios Críticos:
- Backup diario a múltiples ubicaciones geográficas
- Replicación en tiempo real entre data centers
- Export semanal a formato archive
- Testing mensual de procesos de restore
Retención de Datos:
- Backups incrementales: 30 días
- Backups completos: 1 año
- Archive histórico: 7 años para proyectos críticos
- Tags y releases: permanente
Procedimientos de Recovery
RTO (Recovery Time Objective): 4 horas para repositorios críticos RPO (Recovery Point Objective): 1 hora máximo de pérdida de datos
Proceso de Restauración:
- Identificación del scope del problema
- Selección del backup point apropiado
- Restauración en entorno de testing
- Validación de integridad de datos
- Migración controlada a producción
Auditoría y Compliance
Logging y Monitoreo
Eventos Auditados:
- Todos los commits y push operations
- Creación y eliminación de branches
- Cambios en configuración de repositorios
- Accesos y permisos modificados
- Downloads y clones de repositorios
Retención de Logs:
- Actividad de desarrollo: 2 años
- Cambios administrativos: 5 años
- Incidentes de seguridad: 7 años
Reportes de Compliance
Reportes Automáticos:
- Actividad mensual por desarrollador
- Cumplimiento de políticas de branching
- Estado de vulnerabilidades en dependencias
- Métricas de calidad de código
Métricas Clave:
- Número de commits por proyecto/desarrollador
- Tiempo promedio de review de PRs
- Porcentaje de cobertura de tests
- Número de vulnerabilidades detectadas y resueltas
👥 Roles y Responsabilidades
- Development Manager: Definir estrategias de branching y aprobar excepciones
- Tech Leads: Supervisar cumplimiento de convenciones y quality gates
- Senior Developers: Realizar code reviews y mentoring en mejores prácticas
- DevOps Engineers: Mantener infraestructura de repositorios y CI/CD
- Security Team: Auditar repositorios y gestionar políticas de seguridad
- Developers: Seguir convenciones y procedimientos establecidos
📊 Cumplimiento y Medición
Métricas de Calidad
- 100% de commits siguen convenciones de mensaje
- 95% de PRs aprobados en primera revisión
- 0 secrets detectados en código fuente
- 90% de dependencias actualizadas en últimos 6 meses
Indicadores de Productividad
- Tiempo promedio de merge de PRs: < 24 horas
- Número de conflictos de merge por sprint: < 5
- Cobertura de tests: > 80% para repositorios críticos
- Tiempo de build de CI/CD: < 10 minutos
Auditorías y Verificaciones
- Revisión semanal de alertas de seguridad
- Auditoría mensual de permisos de repositorios
- Evaluación trimestral de cumplimiento de políticas
- Auditoría anual externa de procesos de desarrollo
🚨 Incumplimiento
Violaciones de Seguridad
Commit de Secrets:
- Revert inmediato del commit
- Rotación de credenciales expuestas
- Investigación del alcance de exposición
- Capacitación adicional obligatoria
Incumplimiento de Procesos
Bypass de Code Reviews:
- Reversión de cambios no autorizados
- Revisión disciplinaria con supervisor
- Restricción temporal de permisos de push
Mensajes de Commit Inadecuados:
- Capacitación en convenciones de commit
- Supervisión intensificada por 30 días
- Uso obligatorio de commit templates
📖 Referencias
- Semantic Versioning 2.0.0 - https://semver.org/
- Conventional Commits - https://www.conventionalcommits.org/
- GitFlow Workflow - https://nvie.com/posts/a-successful-git-branching-model/
- GitHub Flow - https://docs.github.com/en/get-started/quickstart/github-flow
- NIST SP 800-218 - Secure Software Development Framework
- Política de Desarrollo Seguro
- Estándar de Codificación Segura
📝 Control de Versiones
Versión | Fecha | Cambios | Autor |
---|---|---|---|
1.0.0 | Enero 2025 | Versión inicial | Equipo Development |
¿Te ha resultado útil esta página?
Última modificación: 25 de agosto de 2025