Saltar a contenido

ADR-0003 · Aprobación de producción vía workflow_dispatch manual

  • Estado: reemplazado por ADR-0004
  • Decisores: no registrado en el repositorio (reconstruido del historial de commits)
  • Fecha de la decisión: 2026-06-18 (commits e7f1578, e892da3)

Contexto y problema

Producción no puede desplegarse sola con cada push a main, pero la regla de protección Require reviewers de los GitHub Environments solo está disponible en planes que la organización no tiene (así lo consigna la guía de CI/CD: "Plan Team/Pro no tiene Require reviewers"). Hacía falta un punto de control humano igual.

Opciones consideradas

  1. Environment production con reviewers obligatorios — no disponible en el plan contratado.
  2. workflow_dispatch manual como único disparador del job de producción (elegida).
  3. Desplegar a producción en cada push a main — descartado por riesgo.

Decisión

El job deploy-prod se declara con if: github.event_name == 'workflow_dispatch' y un input environment: production. Un push a main construye y publica la imagen pero no despliega; alguien tiene que entrar a Actions y ejecutar el workflow a mano. El job conserva environment: production, de modo que si en el futuro se habilitan reviewers, la protección aplica sin tocar el workflow.

Consecuencias

Positivas

  • Hay un humano decidiendo cuándo entra un cambio a producción, sin depender del plan de GitHub.
  • La imagen ya está construida y probada en staging cuando se dispara el deploy: el paso manual no reconstruye nada.

Negativas / deuda asumida

  • No queda registro de "quién aprobó qué" más allá del actor del workflow_dispatch.
  • Es fácil creer que un push a main desplegó cuando no lo hizo.
  • El step que arma los tags solo contempla refs/heads/staging y refs/heads/main: disparar el workflow desde otra rama produce una lista de tags vacía y el push de la imagen falla.