Alertas de fallos de GitHub Actions a Slack, Telegram y WhatsApp

Alertas de fallos de GitHub Actions a Slack, Telegram y WhatsApp

Una X roja en GitHub se pasa por alto si no estás mirando la pestaña Actions. Los emails de GitHub se ahogan en la misma bandeja que los newsletters. Los equipos buscan notificaciones Slack de GitHub Actions porque quieren el fallo donde ya hablan.

No necesitas una Action de Slack del marketplace por cada canal. Un curl a AlertHub en failure(), y Slack, Telegram, WhatsApp, Discord o Teams reciben el mismo evento critical (o warning).

Esto es distinto de los webhooks del repositorio (pushes, PRs, issues). Aquí el propio pipeline avisa de que un job ha muerto.

Qué deberías alertar

EventoContexto de GitHubNivel recomendadoPor qué importa
Job / workflow fallidoif: failure()CriticalMain roto o un release bloqueado
Job de deploy fallidoif: failure() en el job de deployCriticalProducción no salió
Test inestable en un PRif: failure()WarningRuido; aún merece una fila en el panel
Nightly correctoif: success()InfoSolo historial — no pings a Slack

Solo warning y critical se empujan a canales externos. Los builds correctos deben quedarse en info (o omitirse).

Configuración (una sola vez)

  1. Crea un proyecto en app.thealerthub.com y copia la clave secreta.
  2. En el repo de GitHub: Settings → Secrets and variables → Actions → añade ALERTHUB_KEY.
  3. Conecta destinos en AlertHub. Telegram basta para un maintainer; Slack para el canal del equipo.

Docs: integración GitHub Actions.

Alerta 1: Workflow fallido (el valor por defecto)

Añade un paso que solo corre cuando algo ya ha fallado. La clave va en secrets, nunca en el YAML.

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Tests
        run: npm test

      - name: Send Alert to AlertHub
        if: failure()
        run: |
          curl -X POST 'https://api.thealerthub.com/sendAlert' \
            -H 'Content-Type: application/json' \
            -d '{
              "ah_key": "${{ secrets.ALERTHUB_KEY }}",
              "ah_title": "GitHub Action failed: ${{ github.workflow }}",
              "ah_description": "Repo ${{ github.repository }} on ${{ github.ref }}. Run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}",
              "ah_level": "critical",
              "ah_source": "GitHub Actions"
            }'

Haz push de un commit que falle los tests y confirma la alerta en el panel y en tus canales.

Alerta 2: Solo el job de deploy fallido

Los monorepos a menudo tienen un job de tests verde y un deploy rojo. Limita el paso al job que publica:

      - name: Notify AlertHub deploy failed
        if: failure()
        run: |
          curl -X POST 'https://api.thealerthub.com/sendAlert' \
            -H 'Content-Type: application/json' \
            -d '{
              "ah_key": "${{ secrets.ALERTHUB_KEY }}",
              "ah_title": "Deploy failed on ${{ github.ref_name }}",
              "ah_description": "Workflow ${{ github.workflow }} — ${{ github.actor }}",
              "ah_level": "critical",
              "ah_source": "GitHub Deploy"
            }'

Netlify y Vercel pueden avisar sin Actions — ver deploys de Netlify y alertas de Vercel. Usa Actions cuando el pipeline sea la fuente de verdad.

Alerta 3: Secreto a nivel de organización

Para agencias y muchos repos, define ALERTHUB_KEY como organization secret (o environment secret por prod). Mismo proyecto AlertHub, ah_source con el nombre del repo para filtrar el feed.

Ideas para sacarle más partido

  • No alertes cada flake de PR. if: failure() && github.ref == 'refs/heads/main' mantiene Slack en silencio.
  • Incluye la URL del run. La descripción de arriba abre el run fallido en un toque.
  • Reutiliza destinos. Si el equipo deja Slack por Teams, cambias AlertHub una vez — no veinte workflows.
  • Combínalo con webhooks del repo. Fallos vía Actions; pings de review vía webhooks de GitHub.

Preguntas frecuentes

¿Por qué no una GitHub Action de Slack?
Esa Action solo habla con Slack. AlertHub es el último salto para que WhatsApp, Telegram y Discord sigan sincronizados.

¿Hay curl en los runners alojados por GitHub?
Sí en ubuntu-latest. En runners Windows usa PowerShell Invoke-RestMethod contra la misma URL.

¿Puedo enviar info al éxito?
Sí, con if: success() y "ah_level": "info". No se repartirá a canales.

Siguientes pasos

Copia el paso de fallo de la documentación de GitHub Actions, añade ALERTHUB_KEY y conecta Slack o Telegram.

Relacionado: webhooks de repositorio GitHub · alertas de despliegues Vercel