Desplegando a mano: Cómo organizar GitHub Actions en un monorepo


Me ha tocado un reto interesante: configurar el CI/CD para un repositorio que tiene tres servicios diferentes conviviendo juntos. El equipo quiere control total, así que nada de disparadores automáticos; el build y el deploy se lanzarán manualmente desde la interfaz de GitHub.

Para mantener el orden, voy a separar la lógica en tres archivos distintos:

  • proj-a-release-workflow.yml
  • proj-b-release-workflow.yml
  • proj-c-release-workflow.yml

¿Cómo funcionarán?

La clave aquí es el evento workflow_dispatch. Esto nos habilita el famoso botón de "Run workflow" en GitHub, permitiéndonos elegir a demanda:

  1. ¿A dónde vamos? (Environment: Staging o Prod).
  2. ¿Qué código usamos? (La branch que queramos desplegar).

El "paso a paso" de cada despliegue

Cada vez que alguien pulse el botón, el workflow hará el trabajo sucio en tres actos:

1. Set up: Preparamos el terreno y las variables según el entorno elegido.

2. Mambo técnico: Pasamos los tests, generamos el build y mandamos el código al servidor.

3. Aviso final: Un email automático para que todo el mundo sepa que la nueva versión ya está arriba.

¡Y listo! Control total, sin sustos y cada servicio a su propio ritmo. 🚀

Comments