Skip to Content
WalkthroughWebhook de Sanity

Webhook de Sanity → GitHub Actions

Cuando se publica contenido en Sanity, un webhook dispara automáticamente un GitHub Actions workflow que reconstruye y despliega el sitio estático en Cloudflare Pages.

Sanity publica contenido Webhook de Sanity GitHub repository_dispatch GitHub Actions (build + deploy) Cloudflare Pages (asamamx.com)

Requisitos previos

  • Acceso al repositorio en GitHub con permisos de admin (para crear secrets)
  • Acceso al proyecto en Sanity (sanity.manage → AsamaMéxico)
  • Cloudflare Pages configurado con el proyecto asamamx-web

Paso 1 — Crear un GitHub Personal Access Token

El token permite a Sanity autenticarse contra la API de GitHub para disparar el workflow.

  1. GitHub → SettingsDeveloper settingsPersonal access tokens → Tokens (classic)
  2. Generate new token (classic)
  3. Nombre: sanity-webhook
  4. Scope: marcar solo repo
  5. Copiar el token generado — solo se muestra una vez

Paso 2 — Agregar secrets al repositorio

GitHub → repositorio → SettingsSecrets and variablesActions → New repository secret.

SecretDescripción
NEXT_PUBLIC_SANITY_PROJECT_IDProject ID del proyecto Sanity
NEXT_PUBLIC_SANITY_DATASETDataset (production)
NEXT_PUBLIC_WORKER_URLURL del worker (https://api.asamamx.com)
NEXT_PUBLIC_PAYPAL_CLIENT_IDClient ID de PayPal
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAMECloud name de Cloudinary
CLOUDFLARE_API_TOKENAPI token de Cloudflare con permisos de Pages
CLOUDFLARE_ACCOUNT_IDAccount ID de Cloudflare

Los valores se obtienen del archivo de variables de entorno compartido del proyecto.


Paso 3 — Configurar el webhook en Sanity

Sanity → manage.sanity.io AsamaMéxicoAPIWebhooks → Create webhook.

CampoValor
NameRebuild Web
URLhttps://api.github.com/repos/PolIsaak/monorep-asamamx/dispatches
Datasetproduction
Trigger onCreate ✓, Update ✓
Filter_type in ["event", "page", "indexPage"]
Projection{"event_type": "sanity-deploy"}
HTTP MethodPOST
Draftsdesmarcado

En HTTP Headers, agregar dos entradas:

NameValue
AuthorizationBearer <token-del-paso-1>
Acceptapplication/vnd.github.v3+json

Guardar con Save.

Filter: el webhook solo se dispara cuando se publica un documento de tipo event, page o indexPage. Cambios en schemas, usuarios o configuración no generan rebuild.


El workflow de GitHub Actions

El archivo .github/workflows/sanity-deploy.yml define el proceso:

on: repository_dispatch: types: [sanity-deploy]

Al recibir el dispatch de Sanity:

  1. Hace checkout del repo en la rama main
  2. Instala dependencias con pnpm 11
  3. Ejecuta pnpm --filter @asamamx/web build con todas las variables de entorno
  4. Despliega apps/web/out/ a Cloudflare Pages con wrangler pages deploy

Verificar que funciona

  1. Publica o edita cualquier evento/página en Sanity Studio
  2. En GitHub → repositorio → Actions → debe aparecer un run de “Deploy — Sanity content change”
  3. El run tarda ~2-3 minutos en completarse
  4. El sitio en asamamx.com refleja el cambio publicado

Agregar más tipos de documento al filter

Si se crea un nuevo tipo de documento en Sanity que afecte el frontend, agregar su _type al filtro del webhook:

_type in ["event", "page", "indexPage", "nuevoTipo"]

Esto se edita en Sanity → API → Webhooks → el webhook existente.

Last updated on