Automatiza tus Deploys y Notificaciones de GitHub con n8n

Aprende a crear workflows que despliegan tu código y te avisan de nuevas estrellas o issues, todo de forma automática.

¿Te ha gustado? ¡Compártelo y sígueme!

SíguemeSígueme

¿Qué es n8n y por qué debería importarte?

Como desarrollador, tu tiempo es oro. ¿Cuántas veces has repetido las mismas tareas? Hacer `git pull` en el servidor, reiniciar un proceso, notificar a tu equipo por Slack... n8n es la herramienta que te devuelve esas horas.

Es una plataforma de automatización open-source que combina una interfaz visual con la posibilidad de meter código cuando lo necesitas. Piensa en ello como un Zapier para desarrolladores, ideal para conectar servicios como GitHub, Discord, APIs propias, bases de datos y mucho más. Puedes instalarlo en tu propio VPS (con Docker, por ejemplo) o usar su versión Cloud.

Workflow 1: Deploy Automático tras Push a `main`

Este es el caso de uso definitivo: cada vez que haces un push a la rama `main` de tu repositorio, n8n se encargará de desplegar los cambios y notificar a tu equipo. Un CI/CD casero, potente y totalmente personalizable.

Paso 1: El Disparador (GitHub Trigger)

Tienes dos opciones: usar el nodo oficial de GitHub o un Webhook genérico. Para empezar, un Webhook es más universal.

  1. Crea un nuevo workflow en n8n y añade un nodo "Webhook".
  2. Copia la URL de prueba (Test URL) que te da n8n.
  3. En tu repositorio de GitHub, ve a `Settings > Webhooks > Add webhook`. Pega la URL en "Payload URL", selecciona "Just the push event" y guárdalo.
  4. Haz un `git push` a tu repo para enviar un evento de prueba a n8n.

Paso 2: Filtrar la Rama `main`

No quieres desplegar con cada push a cualquier rama. Añade un nodo "IF" para asegurarte de que la ejecución solo continúa si el push es a `main`.

Condición en el nodo IF
{{$json["ref"]}} contiene refs/heads/main

Paso 3: Lanzar el Deploy (HTTP Request)

Aquí ocurre la magia. Añade un nodo "HTTP Request" que llame a un webhook de tu plataforma de hosting (como EasyPanel) o a un script en tu servidor.

Puedes configurarlo para que lance un script que haga `git pull && npm run build && supervisorctl restart all`, por ejemplo.

Ejemplo de payload (JSON)
{
  "repo": "{{$json["repository"]["full_name"]}}",
  "branch": "main",
  "commit": "{{$json["after"]}}"
}

Paso 4: Notificar al Equipo

Añade un nodo de "Telegram", "Slack" o "Discord" y configura un mensaje dinámico para avisar del despliegue.

Mensaje para Telegram
🚀 Nuevo deploy desde GitHub
Repo: {{$json["repository"]["full_name"]}}
Rama: main
Commit: {{$json["after"]}}
Autor: {{$json["pusher"]["name"]}}

Toque pro: Conecta una ruta de error desde el nodo de deploy a otro nodo de notificación para avisar si el despliegue falla.

Workflow 2: Notificaciones de Estrellas y Issues

Este workflow es más social. Cada vez que alguien le da ⭐ a tu repo o crea un issue, lo guardaremos en una base de datos y enviaremos un resumen diario por email.

Paso 1: Escuchar Eventos de `star` e `issues`

Usa el mismo método de Webhook de GitHub, pero esta vez, selecciona los eventos "Stars" e "Issues". Esto enviará una alerta a n8n cada vez que alguien interactúe con tu repo de estas dos formas.

Paso 2: Distinguir el Evento (Switch)

Añade un nodo "Switch" para dirigir el flujo según el tipo de evento. Puedes inspeccionar el payload JSON para diferenciar si es una estrella (`$json["action"]` será "created") o un issue (`$json["action"]` será "opened").

Paso 3: Almacenar los Datos

Usa un nodo "Google Sheets" para una solución rápida, o un nodo "Postgres" / "MySQL" para algo más robusto. Aquí tienes un ejemplo de tabla SQL:

Esquema SQL para eventos
CREATE TABLE github_events (
  id SERIAL PRIMARY KEY,
  type VARCHAR(20),        -- 'star' o 'issue'
  repo VARCHAR(255),
  user_name VARCHAR(255),
  payload JSONB,
  created_at TIMESTAMP DEFAULT NOW()
);

Paso 4: Resumen Diario por Email

Crea un segundo workflow que se inicie con un nodo "Cron" (configurado para ejecutarse cada día a las 9:00, por ejemplo). Este workflow leerá los datos de las últimas 24h de tu base de datos o Google Sheet, los formateará con un nodo "Code" (JavaScript), y los enviará por email.

Cuerpo del email de resumen
Resumen GitHub de las últimas 24h

⭐ Nuevas estrellas: {{totalStars}}
🐞 Issues abiertos: {{totalIssues}}

Repos con más movimiento:
{{listaRepos}}

Con n8n, has convertido tareas manuales en un sistema automático que trabaja para ti, permitiéndote centrarte en lo que de verdad importa: programar.

¡Ahora es tu turno!

¿Qué tareas repetitivas automatizas en tu día a día? ¿Usas n8n o alguna otra herramienta? Comparte tus ideas en los comentarios. Si te interesa, puedo publicar los JSON de estos workflows en un repo de GitHub para que los clones directamente.

En una Parte 2, podríamos integrar esto con analíticas de visitas, Firebase o incluso el hosting gratuito que ya hemos visto en el blog. ¡Las posibilidades son infinitas!

    Cómprame un café