Logotipo de Nubaris

Montar un flujo de trabajo en GitHub Actions que ejecute las pruebas lleva veinte minutos. Montar uno en el que confíes para desplegar a producción un viernes por la tarde es otra cosa. La diferencia no está en la sintaxis del YAML, está en cuatro decisiones que casi nadie toma al principio y que después cuesta mucho corregir.

Las etapas mínimas

Un pipeline serio tiene al menos cinco fases, y el orden no es casual: cada una es más lenta y más cara que la anterior, así que las baratas van primero para fallar cuanto antes.

Deja de guardar claves de acceso

Si tu pipeline tiene guardadas unas credenciales permanentes de tu proveedor cloud, tienes un problema de seguridad esperando a ocurrir. Cualquiera con permiso para modificar un flujo de trabajo puede exfiltrarlas, y en la práctica esas claves no se rotan nunca.

La alternativa es la federación de identidades con OIDC: GitHub emite un token de corta duración por ejecución y tu proveedor lo valida contra una relación de confianza que tú defines. No hay ningún secreto que robar porque no hay ningún secreto. Se configura una vez y elimina de golpe toda una categoría de riesgo.

En la misma línea: declara permisos mínimos explícitos en cada flujo. Por defecto el token de GitHub tiene más permisos de los que tu pipeline necesita.

Un pipeline lento es un pipeline que se salta

Esto no es una cuestión de comodidad. Cuando el pipeline tarda veinticinco minutos, la gente agrupa cambios para no esperar, y los lotes grandes son justo lo que hace que los fallos sean difíciles de diagnosticar. La velocidad del pipeline determina el tamaño de los cambios, y el tamaño de los cambios determina cuánto duele cada incidencia.

Tres palancas, por orden de rentabilidad: cachear dependencias entre ejecuciones, paralelizar todo lo que no dependa entre sí, y construir imágenes por capas para que un cambio de código no reinstale el sistema entero. Con eso es habitual bajar de veinte minutos a menos de cinco.

Entornos, aprobaciones y vuelta atrás

Los entornos de GitHub permiten exigir aprobación manual antes de que un despliegue toque producción y restringir qué ramas pueden llegar hasta ahí. Es la forma correcta de tener una puerta de control sin convertirla en un proceso burocrático fuera del flujo.

Y lo más importante: el despliegue debe saber volver atrás solo. Si tu plan de contingencia es «alguien lanza el flujo de la versión anterior a mano», tu tiempo de recuperación depende de que esa persona esté despierta. Un despliegue progresivo que vigila métricas y revierte al detectar degradación convierte una incidencia de una hora en un sobresalto de dos minutos.

Los errores que más vemos

¿Tu pipeline da más problemas de los que resuelve? Cuéntanos cómo desplegáis hoy →


Sigue leyendo

Puedes ver todo lo que hacemos en servicios, o echar un vistazo a los tipos de proyecto que solemos abordar.