GitHub Webhooks は、リポジトリで起きたイベントを外部の自動化処理に橋渡しする仕組みだ。CI/CD のトリガーや、社内ツールとの連携の入口として広く使われている。
イベントの粒度
push、pull_request、issues、release に加えて、workflow_run や deployment まで、開発フローのほぼあらゆる節目をイベントとして購読できる。設定はリポジトリ単位だけでなく組織単位でも可能なので、複数リポジトリ横断の自動化基盤を組むときにも扱いやすい。
使いどころ
GitHub Actions だけで完結しないワークフロー——たとえば PR が開いたら社内の Slack 以外の独自ダッシュボードに反映する、release が出たら外部のデプロイシステムを叩く——といった「GitHub の外」との連携でこそ Webhook の出番になる。Actions 内で完結する処理ならワークフローファイルで済むため、Webhook はあくまで外部システムとの橋渡し役と位置づけたい。
セキュリティと運用
HMAC 署名検証に対応しているので、受信側で必ず検証を入れ、第三者からの偽イベント送信を弾く。エンドポイントが一時的に落ちても、GitHub 側の再配信があるため受信ハンドラは冪等に作っておくのが安全だ。
受信側のスケールで気をつける点
活発なリポジトリや組織単位の購読では、イベントが短時間に集中して届くことがある。受信エンドポイントで重い処理を同期的に走らせると、応答が遅れて配信タイムアウトと再送を招く悪循環に陥りやすい。Webhook ハンドラは「受け取って即座にキューに積む」だけにとどめ、実処理は非同期ワーカーに回す構成が定石だ。
無料で使える。当然ながら GitHub 以外の Git ホスティング(GitLab や Bitbucket)のイベントは対象外で、それぞれ別の Webhook 機構を使うことになる。