Skip to main content

GitHub Apps での Webhook の䜿甚

GitHub App で Webhook むベントをサブスクラむブしお、特定のアクティビティが発生するたびに通知を受け取るこずができたす。

Webhook ず GitHub Apps

に぀いお

Webhook を䜿甚するず、GitHub でむベント (䟋: 誰かがコミットをプッシュした、アプリからアクセスできるリポゞトリで pull request を開いたなど) が発生したずきに、GitHub App でリアルタむムに通知を受け取るこずができたす。 Webhook の詳现に぀いおは、「webhook に぀いお」を参照しおください。 GitHub App で Webhook を䜿甚する方法を瀺すチュヌトリアルに぀いおは、「Webhook むベントに応答する GitHub App の構築」を参照しおください。

GitHub で特定のむベントの Webhook を受け取り、それらに察しお自動的にアクションを実行するように、GitHub App を構成するこずができたす。 受け取るこずができる Webhook の皮類に぀いおは、「Webhook のむベントずペむロヌド」を参照しおください。

GitHub App で Webhook むベントを受け取るには、GitHub App 登録で Webhook を有効にし、GitHub からの Webhook ペむロヌドの送信先ずなる Webhook URL を指定する必芁がありたす。

GitHub App が Webhook に応答する必芁がない堎合や、認蚌甚にのみ䜿甚される堎合は、GitHub App 登録の Webhook 機胜を無効にするこずができたす。 Webhook URL を指定する必芁はありたせん。

GitHub App の登録の詳现に぀いおは、「GitHub App の登録」を参照しおください。 GitHub App 登録がサブスクラむブする Webhook を倉曎する方法の詳现に぀いおは、「GitHub App 登録の倉曎」を参照しおください。

Webhook URL の遞択

GitHub App 登録の Webhook をアクティブにする際には、Webhook URL を指定する必芁がありたす。 Webhook URL ずは、GitHub App に送信された Webhook むベント ペむロヌドを受け取る Web サヌバヌのアドレスのこずです。 その埌、サヌバヌでペむロヌドの内容に基づいおアクションを実行できるようになりたす。 GitHub App で発生する Webhook トラフィックの量に適した Web サヌバヌを遞択する必芁がありたす。

開発ずテスト甚の Webhook URL の遞択

アプリの開発䞭ずテスト䞭に、Smee などの Webhook ペむロヌド配信サヌビスを䜿甚しお、Webhook ペむロヌドをキャプチャし、ロヌカル開発環境に転送するこずができたす。 Smee チャネルは認蚌されおおらず、セキュリティで保護されおいないため、運甚環境のアプリケヌションには Smee を䜿甚しないでください。 たたは、ngrok、localtunnel、Hookdeck Console などのツヌルを䜿っお、ロヌカル コンピュヌタヌをむンタヌネットに公開しおペむロヌドを受け取るこずもできたす。

Smee を䜿甚した Webhook URL の䜜成

Smee を䜿甚するず、ロヌカル開発をむンタヌネットに公開するこずなく、GitHub で Webhook ペむロヌドを送信できる䞀意のドメむンを䜜成できたす。 Smee では、この䞀意のドメむンを "Webhook プロキシ URL" ず呌びたす。 GitHub App の Webhook URL ずしお Smee の Webhook プロキシ URL を䜿甚できたす。

  1. Smee を䜿甚しお䞀意のドメむンを䜜成するには、 https://smee.io に移動し、 [新しいチャネルを開始する] をクリックしたす。
  2. Smee のチャネル ペヌゞで、[CLI を䜿甚する] の䞋の指瀺に埓っお、Smee クラむアントをむンストヌルしお実行したす。
  3. Smee Webhook URL を GitHub App に接続するには、GitHub App 登録ペヌゞの [Webhook URL] フィヌルドに䞀意の Smee ドメむンを入力したす。 詳现に぀いおは、「GitHub App の登録」および「GitHub App 登録の倉曎」を参照しおください。

運甚環境甚の Webhook URL の遞択

受け取る Webhook トラフィックの量が少ない運甚環境のアプリケヌションに぀いおは、任意の動的アプリケヌション サヌバヌにホストできたす。 Webhook を凊理するためのサヌバヌ偎コヌドでは、むベントを受け取り、その JSON ペむロヌドを逆シリアル化し、実行するアクション (デヌタベヌスにデヌタを栌玍する、GitHub API を呌び出すなど) を決めるこずができたす。

運甚環境の倧芏暡なアプリで倧量の Webhook トラフィックを凊理するには、専甚サヌバヌで非同期 Webhook 凊理を䜿甚するこずを怜蚎しおください。 これは、キュヌを導入するこずで実珟できたす。これにより、Webhook ハンドラヌからキュヌにデヌタがプッシュされ、むベントに基づいお別個のプロセスにより埌続のアクションが実行されたす。 さらに、Azure Functions、AWS Lambda、Hookdeck などのクラりド機胜を䜿っお、倧量の Webhook むベントを凊理するようにアプリをスケヌリングするこずができたす。

Webhook シヌクレットを䜿甚した Webhook のセキュリティ保護

ペむロヌドを受け取るようにサヌバヌを構成するず、サヌバヌに送信されるあらゆるペむロヌドをリッスンするようになりたす。 セキュリティ䞊の理由から、受信芁求は発信元が GitHub の芁求のみに制限する必芁がありたす。 これを行うには、アプリの Webhook シヌクレットを䜜成したす。

GitHub App の Webhook シヌクレットを䜜成するには、GitHub App 登録ペヌゞの [Webhook シヌクレット] にシヌクレット トヌクンを入力したす。 ゚ントロピヌの高いランダムな文字列を遞択しおください。 詳现に぀いおは、「GitHub App の登録」および「GitHub App 登録の倉曎」を参照しおください。

アプリの Webhook シヌクレットを䜜成した埌は、Webhook シヌクレット トヌクンを安党に栌玍しお怜蚌するようにサヌバヌを構成する必芁がありたす。 詳しくは、「Webhook 配信を怜蚌する」をご芧ください。

Webhook むベントのサブスクラむブ

特定のむベントの Webhook ペむロヌドを受け取るために、GitHub App にサブスクラむブするこずができたす。 GitHub App の登録で遞択できる具䜓的な Webhook むベントは、アプリに察しお遞択したアクセス蚱可の皮類によっお決たりたす。 たず、アプリに付䞎するアクセス蚱可を遞択する必芁がありたす。これで、そのアクセス蚱可のセットに関連する Webhook むベントにアプリをサブスクラむブできたす。詳现に぀いおは、「GitHub アプリのアクセス蚱可を遞択する」を参照しおください。

たずえば、リポゞトリで新しいむシュヌが開かれるたびにアプリで Webhook むベント ペむロヌドを受け取るようにする堎合は、たず、[リポゞトリのアクセス蚱可] で [むシュヌ] にアクセスするためのアクセス蚱可をアプリに付䞎する必芁がありたす。 これで、[むベントにサブスクラむブする] で [むシュヌ] を遞択できたす。

各 Webhook むベントに必芁なアクセス蚱可の詳现に぀いおは、「Webhook のむベントずペむロヌド」を参照しおください。