@kyanny's blog

My thoughts, my life. Views/opinions are my own.

octokit.js で webhook を受信するサーバーの実装例

octokit.jsoctokit/webhooks.js のドキュメントを読んでもピンと来なかったので実際に書いてみた。

github.com

書いてみた結果、以下のような点が理解できていなかったことがわかった。

  • octokit/webhooks.js 単体での使い方について、ドキュメントに過不足はなかった
  • octokit/webhooks.js 単体で (node:http のミドルウェアとして)サーバーとして動作するイメージがつかめていなかった
  • smee.io と組み合わせたローカル開発の場合のやり方が混乱の元だった
  • octokit/webhooks.js のドキュメントでは EventSource を使うコードが書いてあるが、このやり方だと webhook.on などと併用できない?
  • nodejs では eventsource モジュールを使う、というあたりも混乱に拍車をかけた
  • smee-client を使ってプロキシさせるほうが単純でわかりやすかった
  • プロキシさせる部分は ngork や gh webhook などでも置き換えられる
  • octokit.js のドキュメントでは GitHub App の webhook サーバーを作るシナリオでのサンプルコードが書いてあるが、webhook レシーバーのみ単体で作りたいというユースケースで GitHub App の話が出てくると混乱の元になった
  • probot との関係性(octokit.js を内部で使っており、要するに GitHub App 開発用のフレームワークみたいなものなので、やはり webhook レシーバー単体としての用途だと過剰)