Skip to main content

GitHub CLI を使用して Webhook をテスト用に転送する

GitHub CLI を使うと、複雑なポート転送やサードパーティ製ツールがなくても、お使いの開発環境で Webhook をテストすることができます。

GitHub CLI を使った Webhook の受信について

統合コードを変更するときに、ローカル環境でコードを実行すると、コードをデプロイせずにすばやくテストと反復処理を行うことができます。 GitHub CLI を使って、Webhook をローカル環境に転送できます。

GitHub CLI の Webhook 転送は、リポジトリと 組織の Webhook でのみ機能します。 他の種類の Webhook をローカルでテストする場合は、手動で行う必要があります。 詳しくは、「webhookのテスト」を参照してください。

警告: Webhook 転送は、テスト期間と開発期間にのみ使用するように設計されています。 ライブ Webhook を処理するための運用環境での使用はサポートされていません。

GitHub CLI を使った Webhook の受信

GitHub CLI の詳細については、「GitHub CLI について」を参照してください。

  1. GitHub CLI 拡張機能をインストールして Webhook 転送を有効にするには、extension install サブコマンドを使います。

    gh extension install cli/gh-webhook
    
  2. 組織の Webhook を転送しない場合、必要なアクセス許可が与えられるよう、admin:org_hook スコープを GitHub CLI ログインに追加します。

    gh auth refresh --scopes admin:org_hook
    
  3. アプリケーションをローカルで起動し、Webhook を受信する予定の URL をメモします。 このガイドでは、アプリケーションが http://localhost:3000/webhook で Webhook イベントをリッスンしていることを前提としています。

  4. 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 ハンドラーに転送されます。

: 各リポジトリと組織で、一度に Webhook 転送を使うことができるのは 1 人だけです。 Webhook 転送を設定しようとして、他のユーザーがその組織またはリポジトリを既に操作している場合は、Hook already exists エラーが 発生します。