Fallos de GitHub Actions en el teléfono con ntfy

Fallos de GitHub Actions en el teléfono con ntfy

El YAML que reporta un job muerto no tiene que saber de Slack. Si la guardia ya vive en ntfy, deja el paso failure() de GitHub Actions apuntando a AlertHub y pega una URL de topic en Connections.

AlertHub guarda cada run en el panel y hace POST de warning / critical a ntfy con Title, Priority y Tags. Los builds correctos se quedan en info y no llegan al teléfono.

Esto no son webhooks del repositorio (pushes, PRs). El pipeline mismo dice que el job murió.

Por qué ntfy para CI

NecesidadntfySlack / Teams
Maintainer solo, sin workspace de chatNativoExceso
Despertar el teléfono a las 2 a.m.Prioridad 5 (urgente)Guerras de mute en el canal
Rotar el destinoUna URL de topicBot + canal + app
El mismo evento a un canal de equipo despuésAñade Slack en el mismo proyectoYa está

Las alertas critical de AlertHub mapean a prioridad 5 de ntfy; warning a 4. Info no sale del panel.

Configuración (una vez)

  1. Conserva (o añade) el curl de failure() de la guía de GitHub Actions. Secreto: ALERTHUB_KEY.
  2. En ntfy: suscríbete a un topic difícil de adivinar. La URL es https://ntfy.sh/TU_TOPIC (o ?auth=… si está reservado).
  3. En AlertHub: Connections → ntfy del proyecto → pega la URL del topic. Envía un warning de prueba.

Pasos del destino: docs de ntfy. El nombre del topic es la contraseña.

Alerta 1: Workflow fallido → ntfy urgente

Usa "ah_level": "critical" en if: failure() para que ntfy lo trate como prioridad 5. Incluye la URL del run en ah_description para abrir el job rojo de un toque.

El paso es el mismo curl que la guía orientada a Slack: solo cambia el destino. No añadas un segundo curl ntfy.sh/… en el YAML; esa es la pila de scripts que los usuarios de ntfy ya lamentan.

Alerta 2: Solo main, los PR en silencio

El CI phone-first muere cuando cada flake de PR suena. Filtra el paso:

if: failure() && github.ref == 'refs/heads/main'

Los fallos de PR pueden quedarse en warning en otro job (prioridad 4) o en info para que existan en el feed sin buzz.

Alerta 3: Job de deploy vs job de tests

Los monorepos suelen tener tests verdes y un deploy rojo. Distingue ah_source (GitHub Deploy vs GitHub Actions) para filtrar el panel. Mismo topic de ntfy; títulos distintos. Deploys del host sin Actions: Vercel + Gotify.

Ideas para sacarle más partido

  • Un topic para todos los repos. Secreto de organización ALERTHUB_KEY; ah_source = nombre del repo.
  • No envíes éxitos a ntfy. if: success() + info es solo historial del panel.
  • ¿El equipo sigue en Slack? Añádelo en el mismo proyecto — guardia ntfy con Slack.
  • ¿Teléfono self-hosted? Misma ingestión, destino Gotify en vez de (o junto a) ntfy.

Preguntas frecuentes

¿El YAML de Actions menciona ntfy?
No. Habla con AlertHub. ntfy es una Connection.

¿Cada PR fallido me despertará?
Solo si envías warning/critical sin filtrar github.ref. Filtra en main o baja el ruido de PR a info.

¿Funciona ntfy autoalojado?
Sí. Pega https://tu-host/topic (HTTPS, accesible desde internet).

Siguientes pasos

Copia el paso de fallo de GitHub Actions, pega un topic de ntfy en Connections y haz fallar un job de test en main.

Relacionado: configuración de ntfy · GitHub Actions a Slack/Telegram · Uptime + VPS en ntfy