概要
このチュートリアルでは、webhook イベントに応答して API 要求を行う GitHub App を作成するコードを記述する方法について説明します。 具体的には、アプリにアクセス権が付与されているリポジトリで pull request が開かれると、アプリは pull request の Webhook イベントを受け取ります。 その後、アプリは GitHubの API を使用して、pull request にコメントを追加します。
このチュートリアルでは、アプリの開発中にご自身のコンピューターまたは codespace をサーバーとして使います。 アプリを運用環境で使用する準備ができたら、アプリを専用サーバーにデプロイする必要があります。
このチュートリアルでは JavaScript を使いますが、サーバーで実行できる任意のプログラミング言語を使用できます。
webhook について
GitHub Appを登録するときに、webhook URL を指定し、webhook イベントをサブスクライブできます。 GitHubアクティビティによってアプリがサブスクライブされているイベントがトリガーされると、GitHubは Webhook イベントをアプリの webhook URL に送信します。
たとえば、pull request webhook イベントに GitHub App をサブスクライブできます。 アプリにアクセス権が付与されたリポジトリでプル要求が開かれると、 GitHub はプル要求 webhook イベントをアプリの webhook URL に送信します。 複数のアクションでそのイベントをトリガーできる場合は、イベントをトリガーしたアクションの種類を示す action フィールドがイベント ペイロードに含まれます。 この例では、pull request が開かれたためにイベントがトリガーされたため、action の値は opened になります。
これらの Webhook イベントをリッスンしているサーバー上でアプリが実行されている場合は、アプリで Webhook イベントを受け取ったときにアクションを実行できます。 たとえば、アプリでは、 GitHub API を使用して、pull request webhook イベントを受信したときに pull request にコメントを投稿できます。
詳しくは、「GitHub Apps での Webhook の使用」をご覧ください。 使用できる Webhook イベントとアクションの詳細については、「Webhook のイベントとペイロード」を参照してください。
前提条件
このチュートリアルでは、お使いのコンピュータまたは codespace で Node.js バージョン 20 以降と npm バージョン 6.12.0 以降が実行されている必要があります。 詳細については、「 Node.js」を参照してください。
このチュートリアルでは、JavaScript と ES6 の基本的な構文を理解していることを前提としています。
セットアップ
以下のセクションでは、次のコンポーネントを設定します。
- アプリのコードを格納するリポジトリ
- Webhook をローカルで受信する方法
- "pull request" Webhook イベントを購読し、pull request にコメントを追加する権限を持ち、ローカルで受信可能な Webhook URL を使用する GitHub App 登録
アプリのコードを格納するリポジトリを作成する
- アプリのコードを格納するリポジトリを作成します。 詳しくは、「新しいリポジトリの作成」をご覧ください。
- 前の手順のリポジトリをクローンします。 詳しくは、「リポジトリをクローンする」をご覧ください。 ローカル複製または GitHub Codespacesを使用できます。
- ターミナルで、クローンが格納されているディレクトリに移動します。
- ディレクトリに
.gitignoreファイルがまだ含まれていない場合は、.gitignoreファイルを追加します。 後でこのファイルにコンテンツを追加します。.gitignoreファイルについて詳しくは、「ファイルを無視する」を参照してください。
後の手順で、このリポジトリにさらにコードを追加します。
Webhook プロキシ URL を取得する
アプリをローカルで開発するには、webhook プロキシ URL を使用して、 GitHub からコンピューターまたはコードスペースに Webhook を転送できます。 このチュートリアルでは、Smee.io を使って Webhook プロキシ URL を指定し、Webhook を転送します。
- ブラウザーで https://smee.io/ にアクセスします。
- 新しいチャンネルの開始をクリックします。
- [Webhook Proxy URL] (Webhook プロキシ URL) の下にある完全な URL をコピーします。 この URL は、後の手順で使用します。
GitHub App を登録します。
このチュートリアルを行うには、次の条件を満たす GitHub App の登録が必要です:
- Webhook がアクティブになっている
- ローカルで受信できる Webhook URL を使用する
- "pull request" リポジトリのアクセス許可がある
- "pull request" Webhook イベントをサブスクライブする
次の手順では、これらの設定に GitHub App を登録する手順について説明します。 GitHub App設定の詳細については、「GitHub アプリの登録」を参照してください。
- GitHub の任意のページの右上隅にある、自分のプロフィール写真をクリックします。
- アカウント設定にアクセスしてください。
- 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
- 組織が所有するアプリの場合:
- [自分の組織] をクリックします。
- 組織の右側にある [設定] をクリックします。
- 左側のサイドバーの