X-GitHub-Event
Type d'événement : ping, push, pull_request, issues, …
Collez une URL de capture Tracehook comme Payload URL d'un webhook GitHub et lisez l'événement tel que GitHub l'envoie : X-GitHub-Event, X-GitHub-Delivery, X-Hub-Signature-256 et le corps complet, en direct. Sans compte, chiffré, effacé après 24 h.
Quatre étapes, aucune configuration côté serveur. Remplacez <domaine> et <votre-id> par les valeurs de votre session.
Créez une URL de capture (bouton ci-dessous). Vous obtenez une adresse de la forme https://<domaine>/h/<votre-id>. Vous pouvez y ajouter un sous-chemin, par exemple /github.
Sur GitHub, ouvrez votre dépôt → Settings → Webhooks → « Add webhook » (même chemin au niveau d'une organisation).
Collez l'URL de capture dans « Payload URL ». Choisissez « Content type : application/json », renseignez un « Secret » si vous voulez tester la signature, puis les événements à recevoir.
Enregistrez : GitHub envoie immédiatement un événement ping. Il apparaît dans votre session Tracehook ; chaque push, pull request ou issue suivra.
Les headers ci-dessous sont ceux que GitHub documente sur chaque livraison. Tracehook les affiche dans l'ordre reçu, avec le corps brut.
Type d'événement : ping, push, pull_request, issues, …
Identifiant unique (GUID) de la livraison, aussi visible dans « Recent Deliveries ».
sha256=<HMAC-SHA256 du corps brut avec votre secret>. Présent seulement si un secret est configuré.
application/json si vous l'avez choisi ; sinon application/x-www-form-urlencoded avec le JSON dans un champ payload.
{
"zen": "…",
"hook_id": 123456789,
"hook": {
"type": "Repository",
"id": 123456789,
"events": ["push", "pull_request"],
"config": { "content_type": "json", "url": "https://<domaine>/h/<votre-id>/github" }
},
"repository": { "full_name": "org/repo", "…": "…" },
"sender": { "login": "…", "…": "…" }
}Ce qui explique la plupart des « le webhook n'arrive pas » ou « signature invalide ».
Par défaut GitHub envoie application/x-www-form-urlencoded avec le JSON dans un champ payload. Si votre handler attend du JSON brut, choisissez « application/json » dans la configuration du webhook. Tracehook affiche les deux formes (onglets Body et Raw).
X-Hub-Signature-256 est calculée sur les octets exacts du corps. Comparez avec une fonction à temps constant et sans re-sérialiser le JSON. Le corps brut est disponible dans l'onglet Raw.
Si le champ « Secret » est vide, le header X-Hub-Signature-256 est absent. Un handler qui l'exige répondra en erreur : renseignez le secret ou assouplissez le test.
Le premier événement reçu à la création est ping (X-GitHub-Event: ping). Son corps n'a ni commits ni ref : ne le confondez pas avec un échec de livraison.
Settings → Webhooks → Recent Deliveries permet de renvoyer une livraison (« Redeliver »). Vous pouvez aussi copier la requête en cURL depuis Tracehook et la rejouer vers votre serveur local.
Pour vérifier que votre URL de capture reçoit bien une requête de cette forme, sans attendre le fournisseur.
curl -X POST https://<domaine>/h/<votre-id>/github \
-H 'Content-Type: application/json' \
-H 'X-GitHub-Event: ping' \
-H 'X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958' \
-H 'X-Hub-Signature-256: sha256=<signature-fictive>' \
-d '{"zen":"Keep it logically awesome.","hook_id":123456789,"repository":{"full_name":"org/repo"}}'Cette commande imite la forme d'un événement ping GitHub (valeurs fictives, signature non valide). Pour un vrai événement signé, passez par la configuration du dépôt.
Une valeur, partout.
Détails sur le chiffrement et la rétention : Sécurité & données. Routes, flux SSE et codes d'erreur : référence API. Autre fournisseur : tester un webhook Stripe.