Probar gratis
5 min lectura Guide 326 of 877

Configurando Reglas de Protección de Ramas

Las reglas de protección de ramas son tus guardianes automatizados. Aseguran que los code reviews ocurran, los tests pasen, y las ramas críticas permanezcan estables. Una protección correctamente configurada previene errores costosos y hace cumplir estándares del equipo sin policía manual.

Opciones de Protección

ProtecciónPropósitoRecomendado
Requerir PRSin push directo✓ Siempre
Requerir reviewCalidad de código✓ Siempre
Requerir CITests pasen✓ Siempre
ActualizadaSin conflictos de merge✓ Usualmente
Bloquear force pushPreservar historial✓ Siempre

Configuración en GitHub

Configurando Protección

PROTECCIÓN DE RAMAS EN GITHUB
═════════════════════════════

ACCESO:
─────────────────────────────────────
Settings → Branches → Add rule
├── Patrón de nombre de rama: main
└── Configurar protecciones

PROTECCIONES REQUERIDAS:
─────────────────────────────────────
☑ Requerir pull request antes de merge
├── Aprobaciones requeridas: 1 (equipo pequeño) o 2 (más grande)
├── Descartar aprobaciones de PR obsoletas
│   └── Cambios después de aprobación necesitan re-review
├── Requerir review de Code Owners
│   └── Usar archivo CODEOWNERS
└── Requerir aprobación del push más reciente
    └── Previene commits a escondidas después de aprobación

☑ Requerir que status checks pasen
├── Requerir que ramas estén actualizadas
├── Agregar checks:
│   ├── ci/build
│   ├── ci/test
│   ├── ci/lint
│   └── security/scan
└── Todos deben pasar antes de merge

☑ Requerir resolución de conversaciones
└── Todos los comentarios de PR deben estar resueltos

☑ Requerir commits firmados (opcional)
└── Para repos de alta seguridad

RESTRICCIONES DE PUSH:
─────────────────────────────────────
☑ Restringir quién puede hacer push a ramas coincidentes
├── Seleccionar equipos/usuarios permitidos
├── Solo para emergencias
└── Usualmente: nadie (todo vía PR)

☑ No permitir bypass de configuraciones anteriores
└── Incluso admins deben seguir reglas

☑ Bloquear force pushes
└── Proteger historial

☑ Bloquear eliminaciones
└── No se pueden eliminar ramas protegidas

Rulesets de GitHub

RULESETS DE GITHUB (MÁS NUEVO)
══════════════════════════════

VENTAJAS SOBRE BRANCH RULES:
─────────────────────────────────────
├── Aplicar a nivel de organización
├── Apuntar múltiples ramas/repos
├── Permisos de bypass más granulares
├── Reglas de tags incluidas
├── Mejor audit trail
└── Recomendado para enterprise

CREANDO UN RULESET:
─────────────────────────────────────
Repository → Settings → Rules → Rulesets

Nuevo ruleset:
├── Nombre: "Protección de Producción"
├── Enforcement: Activo
├── Ramas objetivo: main, release/*
└── Configurar reglas

OPCIONES DE RULESET:
─────────────────────────────────────
Reglas de rama:
├── Restringir creaciones
├── Restringir actualizaciones
├── Restringir eliminaciones
├── Requerir historial lineal
├── Requerir que deployments tengan éxito
├── Requerir commits firmados
├── Requerir pull request
├── Requerir status checks
└── Bloquear force pushes

Lista de bypass:
├── Administradores del repo
├── Equipos específicos (ej., Equipo de Release)
├── Deploy keys
└── GitHub Actions (si aplica)

Configuración por Rama

Niveles de Protección

PROTECCIÓN POR TIPO DE RAMA:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ MAIN (Producción):                                          │
│ ├── Máxima protección                                      │
│ ├── 2 aprobaciones requeridas                              │
│ ├── Todos los status checks                                │
│ ├── Code owners requeridos                                 │
│ ├── No bypass (incluso admins)                             │
│ └── Bloquear force push y eliminación                      │
│                                                             │
│ DEVELOP (Integración):                                      │
│ ├── Protección alta                                        │
│ ├── 1 aprobación requerida                                 │
│ ├── Status checks principales                              │
│ ├── Code owners opcional                                   │
│ └── Bloquear force push                                    │
│                                                             │
│ RELEASE/* (Releases):                                       │
│ ├── Protección similar a main                              │
│ ├── 1-2 aprobaciones                                       │
│ ├── Todos los status checks                                │
│ └── Bloquear cambios después de code freeze               │
│                                                             │
│ FEATURE/* (Features):                                       │
│ ├── Protección ligera o ninguna                            │
│ ├── CI checks solamente                                    │
│ └── Flexibilidad para desarrollo                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Manejo de Emergencias

Procesos de Bypass

PROCEDIMIENTO DE HOTFIX:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ ESCENARIO: Bug crítico en producción                       │
│                                                             │
│ OPCIÓN 1: Rama hotfix con reglas reducidas                 │
│ ├── Crear rama hotfix/*                                    │
│ ├── Reglas: 1 aprobación, tests críticos                   │
│ ├── Merge rápido a main                                    │
│ └── Backport a develop                                     │
│                                                             │
│ OPCIÓN 2: Bypass temporal                                  │
│ ├── Admin aprueba bypass                                   │
│ ├── Documentar razón                                       │
│ ├── Hacer fix                                              │
│ ├── Review post-merge                                      │
│ └── Registrar en audit log                                 │
│                                                             │
│ IMPORTANTE:                                                 │
│ • Siempre documentar el por qué                            │
│ • Hacer review post-mortem                                 │
│ • No normalizar bypasses                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas