Despliegue continuo: de git push a producción

Despliegue continuo: de git push a producción

Este post es un poco especial: es el primero que se publica solo. No he entrado al servidor, no he ejecutado ningún comando de despliegue a mano. Simplemente he hecho git push desde mi portátil y el resto ha ocurrido sin intervención.

Las piezas

El blog es un sitio estático (Astro compila todo a HTML en el build), así que en producción no hace falta ni Node ni un servidor de aplicaciones: basta con servir archivos. Las piezas encajan así:

El flujo

Al empujar a main, el runner ejecuta un par de comandos en el servidor:

git -C server pull --ff-only
docker compose up -d --build

Si un post rompe el build, la imagen no se llega a construir y el contenedor anterior sigue en pie: la peor consecuencia de un error es que no se publique, nunca que el blog se caiga.

Lo que he aprendido

Montar esto me ha obligado a entender cosas que como desarrollador solía dar por sentadas: la diferencia entre estático y SSR, por qué una imagen multi-stage no necesita arrastrar Node, y cómo un runner se conecta a Forgejo sin exponer puertos.

Si estás leyendo esto, es que el experimento ha funcionado. 🎉