Testowanie webhooka GitHub lokalnie
Aby zwalidować handler webhooka GitHub, nie musisz pushować commitów ani otwierać prawdziwych PR. Wygeneruj event GitHub podpisany przez HMAC-SHA256, edytuj payload (repo, branch, autor) i wyślij go do swojego lokalnego serwera. Twoja weryfikacja X-Hub-Signature-256 jest testowana od razu.
Zweryfikuj podpis po stronie serwera
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));Aby odebrać prawdziwy webhook GitHub na swojej maszynie bez deployu, skonfiguruj URL swojego tunelu Relay w ustawieniach repo.
Najczęstsze pytania
Jak zasymulować push GitHub na moim lokalnym serwerze?
Wybierz event push powyżej, wklej sekret webhooka skonfigurowany w Twoim repo, podaj URL swojego handlera (przez Relay) i wyślij. Header X-Hub-Signature-256 jest obliczany w HMAC-SHA256 tak jak robi to GitHub.
Jaka jest różnica między X-Hub-Signature a X-Hub-Signature-256?
X-Hub-Signature używa SHA-1 (legacy), X-Hub-Signature-256 używa SHA-256 (zalecane). Generator tworzy oba headery, aby pokryć wszystkie przypadki.
Jak zweryfikować podpis po stronie serwera?
Oblicz HMAC-SHA256(rawBody, secret) i porównaj w czasie stałym z wartością z headera (po 'sha256='). Zobacz przykład kodu poniżej.
Czy mogę testować również pull_request i issues?
Tak, eventy push, pull_request i issues są dostępne, z poprawnym headerem X-GitHub-Event dla każdego z nich.