リポジトリwebhookを使用すると、リポジトリで特定のイベントが発生するとき必ずHTTP POST
ペイロードを受け取ることができます。 The webhook REST APIs enable you to manage repository, organization, and app webhooks. You can use this API to list webhook deliveries for a webhook, or get and redeliver an individual delivery for a webhook, which can be integrated into an external app or service. You can also use the REST API to change the configuration of the webhook. たとえば、ペイロードURL、コンテントタイプ、SSLの検証、シークレットを変更できます。 詳しい情報については、以下を参照してください。
Organization のすべてのリポジトリからイベントを受信するため単一の webhook を設定する場合は、Organization Webhooks の API ドキュメントを参照してください。
REST APIに加えて、GitHubはリポジトリのPubSubHubbubハブとしても動作します。
webhook の受信
GitHub AE で webhook ペイロードを送信するには、インターネットからサーバーにアクセスできる必要があります。 暗号化されたペイロードを HTTPS 経由で送信できるように、SSL の使用も強く推奨します。
webhook ヘッダー
GitHub AE は、イベントタイプとペイロード識別子を区別するために、複数の HTTP ヘッダーも送信します。 詳細は「webhook ヘッダー」を参照してください。
PubSubHubbub
GitHub は、すべてのリポジトリに対する PubSubHubbub のハブとして機能することもできます。 PSHB はシンプルな公開/サブスクライブプロトコルで、トピックが更新されたときにサーバーが更新を受信できるよう登録できます。 更新は HTTP POST リクエストでコールバック URL に送信されます。 GitHub リポジトリのプッシュに対するトピック URL のフォーマットは以下の通りです。
https://github.com/{owner}/{repo}/events/{event}
イベントには、任意の使用可能な webhook イベントを指定します。 詳しい情報については、「webhook イベントとペイロード」を参照してください。
レスポンスのフォーマット
デフォルトのフォーマットは、既存の post-receive フックから予想できます。すなわち、POST で payload
パラメータとして送信される JSON の本文です。 また、Accept
ヘッダまたは .json
拡張子で、Raw 形式の JSON 本文を受信するよう指定できます。
Accept: application/json
https://github.com/{owner}/{repo}/events/push.json
コールバック URL
コールバック URL は http://
プロトコルを使用できます。
# Send updates to postbin.org
http://postbin.org/123
サブスクライブ
GitHub PubSubHubbub のエンドポイントは https://[hostname]/api/v3/hub
です。 curl でリクエストに成功すると、以下のように表示されます。
curl -u "user" -i \
https://[hostname]/api/v3/hub \
-F "hub.mode=subscribe" \
-F "hub.topic=https://github.com/{owner}/{repo}/events/push" \
-F "hub.callback=http://postbin.org/123"
PubSubHubbub リクエストは複数回送信できます。 フックがすでに存在する場合は、リクエストに従って変更されます。
パラメータ
名前 | 種類 | 説明 |
---|---|---|
hub.mode | string | 必須。 subscribe または unsubscribe 。 |
hub.topic | string | 必須。 GitHub リポジトリがサブスクライブする URI。 パスのフォーマットは /{owner}/{repo}/events/{event} としてください。 |
hub.callback | string | トピックの更新を受信する URI。 |
hub.secret | string | 送信する本文コンテンツの ハッシュ署名を生成する共有秘密鍵。 GitHubからきたプッシュを、そのリクエストのボディをX-Hub-Signature-256 ヘッダと比較して、検証できます。 詳細は、 PubSubHubbub のドキュメントを参照してください。 |