Skip to main content

GitHub CLI を使った Webhook の受信

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

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

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

GitHub CLI の Webhook 転送は、リポジトリと Organization の Webhook でのみ機能します。 スポンサーシップ、GitHub App、Enterprise、または Marketplace Webhook をローカルでテストする場合は、手動で行う必要があります。 詳細については、「webhookの作成」を参照してください。

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

GitHub CLI を使った Webhook の受信

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

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

    gh extension install cli/gh-webhook
    
  2. Organization 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 ではなく Organization の Webhook をリッスンするには、--repo フラグを --org フラグに置き換えます。 たとえば、「 --org="octo-org" 」のように指定します。

    gh webhook forward --repo=REPOSITORY --events=EVENTS --url=URL
    

コマンドはバックグラウンドで実行したままにします。 これにより、指定したリポジトリに対して指定されたすべてのイベントが受信され、指定した URL で実行されている Webhook ハンドラーに転送されます。

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