GitHub-Webhook lokal testen
Um einen GitHub-Webhook-Handler zu validieren, musst du keine Commits pushen oder echte PRs öffnen. Generiere ein HMAC-SHA256-signiertes GitHub-Event, bearbeite den Payload (Repo, Branch, Autor) und sende es an deinen lokalen Server. Deine X-Hub-Signature-256-Prüfung wird sofort getestet.
Signatur serverseitig prüfen
import crypto from 'crypto';
const sig = req.headers['x-hub-signature-256'];
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));Um einen echten GitHub-Webhook auf deiner Maschine zu empfangen, ohne zu deployen, hinterlege die URL deines Relay-Tunnels in den Einstellungen des Repos.
Häufige Fragen
Wie simuliere ich einen GitHub-Push auf meinem lokalen Server?
Wähle das Event push oben, füge das in deinem Repo konfigurierte Webhook-Secret ein, gib die URL deines Handlers an (über das Relay) und sende. Der X-Hub-Signature-256-Header wird in HMAC-SHA256 berechnet, genau wie GitHub es macht.
Was ist der Unterschied zwischen X-Hub-Signature und X-Hub-Signature-256?
X-Hub-Signature nutzt SHA-1 (legacy), X-Hub-Signature-256 nutzt SHA-256 (empfohlen). Der Generator erzeugt beide Header, um alle Fälle abzudecken.
Wie prüfe ich die Signatur serverseitig?
Berechne HMAC-SHA256(rawBody, secret) und vergleiche zeitkonstant mit dem Wert aus dem Header (nach 'sha256='). Siehe das Codebeispiel unten.
Kann ich auch pull_request und issues testen?
Ja, die Events push, pull_request und issues stehen zur Verfügung, jeweils mit korrektem X-GitHub-Event-Header.