Marcos Ramírez BETA

#ci-cd

Pasillo de un centro de datos a oscuras entre filas de racks, con un bloque de luz naranja de aviso al fondo

18 días sin desplegar: la autopsia del build de mi blog

Mi blog estuvo 18 días sin publicar nada y no me enteré: estaba de baja por una lesión ocular que no me dejaba ver el monitor. Los posts estaban commiteados en master, el workflow salía en verde, y en producción daban 404. La causa era una línea que faltaba, pero lo interesante vino después: al destripar el pipeline descubrí que estaba quemando 4812 minutos de compilación de los 3000 del plan gratuito, que el 62% de las páginas que generaba no las visitaba nadie, y que 102 de mis últimos 113 despliegues no cambiaban ni un byte del sitio. Esta es la autopsia completa, con los números medidos, no estimados.

08:30 13 min Marcos Ramírez Lucía
Una tarjeta de GitHub Issue con etiqueta draft transformándose por una flecha en un documento de borrador con imagen de cabecera

La Inteligencia Artificial escribe los borradores del blog

Hace nada monté un sistema que recogía solo las ideas del blog y las dejaba como issues en GitHub. Funcionaba, pero el problema se había movido de sitio: ahora tenía cuarenta ideas mirándome y ninguna escrita. Así que cerré el círculo. Ahora un GitHub Action coge una idea-issue cada día, investiga, escribe el borrador entero en mi voz, le genera la imagen de cabecera y lo deja commiteado en el repo, listo para que yo lo revise. Lo mueve Claude Code corriendo dentro de Actions, autenticado con mi suscripción, sin pagar API. Te enseño cómo está montado y cómo replicarlo, con el código en un gist.

Un reloj de cron averiado junto al logo de GitHub Actions y un engranaje de Cloudflare Workers

El cron de GitHub Actions falla: lo arreglé con Cloudflare

Programé un post para las 8:30 de la mañana y a las 9 seguía sin aparecer en la web. El culpable no era mi código ni la zona horaria: era el scheduler de cron de GitHub Actions, que lleva meses estrangulando las tareas programadas. Te cuento por qué pasa, qué opciones tenía sobre la mesa y cómo lo resolví moviendo el reloj a un Cron Trigger de Cloudflare que dispara el despliegue por API.

08:30 10 min Marcos Ramírez Lucía