Simular un webhook push de GitHub
Un mock GET con forma de evento push de GitHub, con un commit en refs/heads/main.
Esta plantilla devuelve un evento push con forma de GitHub con un commit en refs/heads/main, para que puedas desarrollar un activador de CI o un controlador de bot sin tener que enviar a un repositorio real. Lleva los campos en los que la mayoría de los controladores realmente se dividen (ref, after y el nombre del repositorio) y omite el encabezado de firma, por lo que ejercita tu análisis en lugar de tu verificación.
Devuelve un evento listo para usar: aliméntalo directamente en tu propio controlador.
Payload de respuesta
{
"ref": "refs/heads/main",
"before": "a10867b14bb761a232cd80139fbd4c0d33264240",
"after": "b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9",
"repository": {
"full_name": "octocat/quickmock-demo"
},
"pusher": {
"name": "octocat"
},
"commits": [
{
"id": "b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9",
"message": "fix: handle empty payload",
"timestamp": "2024-05-01T12:00:00Z"
}
]
}
Campos que vale la pena conocer
| Campo | Lo que significa |
|---|---|
| ref | La rama a la que se envió, ej. refs/heads/main. |
| after | El SHA de la confirmación después de ser enviada: llamadas posteriores de API de GitHub hacen referencia a él. |
| repository.full_name | El nombre del repositorio como propietario/repositorio; edítalo para que coincida con tu repositorio de prueba. |
| pusher.name | El nombre de usuario de GitHub de quien empujó los cambios. |
| commits | Las confirmaciones incluidas en este envío: aquí se recortan a una. |
Crear el mock
curl -X POST https://quickmock.dev/api/mocks \
-H 'Content-Type: application/json' \
-d '{
"method": "GET",
"response_status": 200,
"content_type": "application/json",
"response_body": "{\"ref\":\"refs/heads/main\",\"before\":\"a10867b14bb761a232cd80139fbd4c0d33264240\",\"after\":\"b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9\",\"repository\":{\"full_name\":\"octocat/quickmock-demo\"},\"pusher\":{\"name\":\"octocat\"},\"commits\":[{\"id\":\"b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9\",\"message\":\"fix: handle empty payload\",\"timestamp\":\"2024-05-01T12:00:00Z\"}]}"
}'
Llamarlo
curl https://quickmock.dev/m/<slug>
Lo que obtienes
GET /m/<slug> -> 200 a GitHub-style push event
one commit on refs/heads/main
En qué se diferencia de la realidad
Esta es una única confirmación estática en lugar del conjunto completo de campos que lleva un evento push real: sin encabezado X-Hub-Signature-256, sin remitente o head_commit, sin URL de comparación.
Fuentes
Preguntas frecuentes
- ¿Es este un webhook real de GitHub?
- No. Es un único commit estático servido desde tu URL mock, sin el encabezado X-Hub-Signature-256, el remitente, el head_commit o la URL de comparación que lleva un evento push real.
- ¿Cómo pruebo un envío a una rama diferente?
- Cambia ref en el cuerpo de la respuesta — por ejemplo a refs/heads/release. El filtrado de sucursales es el fragmento de lógica más común en un controlador push y el más fácil de estropear.
- ¿Puedo usarlo para probar etiquetas o eventos de eliminación?
- Solo editando el cuerpo para que coincida con esos payloads, que difieren en forma. Para un manejador que se distribuye según el tipo de evento, crea un mock por evento para que cada caso tenga su propia URL estable.
¿Listo para usarlo?
Combina bien con esta guía: Probar un receptor de webhook
Plantillas relacionadas
Última actualización: 2026-10-17