GitHub CLI を使った Webhook の受信について
統合コードを変更するときに、ローカル環境でコードを実行すると、コードをデプロイせずにすばやくテストと反復処理を行うことができます。 GitHub CLI を使って、Webhook をローカル環境に転送できます。
GitHub CLI の Webhook 転送は、リポジトリと 組織の Webhook でのみ機能します。 他の種類の Webhook をローカルでテストする場合は、手動で行う必要があります。 詳しくは、「webhookのテスト」を参照してください。
Warning
Webhook 転送は、テストと開発中にのみ使用するように設計されています。 ライブ Webhook を処理するための運用環境での使用はサポートされていません。
GitHub CLI を使った Webhook の受信
Note
GitHub CLI について詳しくは、「GitHub CLI について」をご覧ください。
-
GitHub CLI 拡張機能をインストールして Webhook 転送を有効にするには、
extension install
サブコマンドを使います。gh extension install cli/gh-webhook
-
組織の Webhook を転送しない場合、必要なアクセス許可が与えられるよう、
admin:org_hook
スコープを GitHub CLI ログインに追加します。gh auth refresh --scopes admin:org_hook
-
アプリケーションをローカルで起動し、Webhook を受信する予定の URL をメモします。 このガイドでは、アプリケーションが
http://localhost:3000/webhook
で Webhook イベントをリッスンしていることを前提としています。 -
Webhook がアプリケーションに配信されるように設定するには、
webhook forward
サブコマンドを実行します。REPOSITORY
をリポジトリの名前に置き換えます。 たとえば、「monalisa/octocat
」のように入力します。EVENTS
を、受信するイベントのコンマ区切りのリストに置き換えます。 たとえば、「issues,pull_request
」のように入力します。URL
を、アプリケーションで Webhook を受け取ることが想定されているローカル URL に置き換えます。 たとえば、「"http://localhost:3000/webhook"
」のように入力します。 リポジトリ Webhook ではなく組織の Webhook をリッスンするには、--repo
フラグを--org
フラグに置き換えます。 たとえば、「--org="octo-org"
」のように指定します。gh webhook forward --repo=REPOSITORY --events=EVENTS --url=URL
コマンドはバックグラウンドで実行したままにします。 これにより、指定したリポジトリに対して指定されたすべてのイベントが受信され、指定した URL で実行されている Webhook ハンドラーに転送されます。
Note
各リポジトリと organization で、一度に Webhook 転送を使用できるのは 1 人だけです。 Webhook 転送を設定しようとして、他のユーザーがその組織またはリポジトリを既に操作している場合は、Hook already exists
エラーが 発生します。