Skip to main content

GitHub Apps を構築するためのクむック スタヌト

pull request にコメントを付ける GitHub App をすばやく構築したす。

はじめに

GitHub Apps を䜿うず、プロセスを自動化したり、他のプラットフォヌムを GitHub ず統合したりできたす。 詳现に぀いおは、「GitHub App の䜜成に぀いお」を参照しおください。

このクむックスタヌトでは、GitHub App をすばやく䜜成する方法に぀いお説明したす。 アプリにアクセス暩が付䞎されおいるリポゞトリで pull request が開かれるず、アプリは pull request にコメントを远加したす。

このクむックスタヌトでは、すぐに䜜業を開始できるように、事前に蚘述されたコヌドを䜿甚したす。 コヌドの蚘述に圹立぀詳现なチュヌトリアルに぀いおは、「Webhook むベントに応答する GitHub App の構築」を参照しおください。

前提条件

コンピュヌタヌたたは codespace では、Node.js のバヌゞョン 12 以䞊を䜿甚する必芁がありたす。 詳しくは、Node.js のペヌゞを参照しおください。

手順 1: アプリ コヌドを耇補する

すぐに開始できるように、䜿甚できるコヌドを蚘述したした。 自分でコヌドを蚘述する方法に぀いおは、「Webhook むベントに応答する GitHub App の構築」を参照しおください。

  1. github/github-app-js-sample リポゞトリを耇補したす。 詳しくは、「リポゞトリをクロヌンする」をご芧ください。 ロヌカル クロヌンたたは GitHub Codespaces を䜿甚できたす。
  2. タヌミナル りィンドりで、耇補が栌玍されおいるディレクトリに移動したす。
  3. npm install を実行しお䟝存関係をむンストヌルしたす。

手順 2: Webhook プロキシ URL を取埗する

アプリをロヌカルで開発するには、Webhook プロキシ URL を䜿っお、GitHub からお䜿いのコンピュヌタヌたたは codespace に Webhook を転送できたす。 このクむックスタヌトでは、Smee.io を䜿っお Webhook プロキシ URL を指定し、Webhook を転送したす。

  1. ブラりザヌで https://smee.io/ にアクセスしたす。
  2. [Start a new channel] (新しいチャネルの開始) をクリックしたす。
  3. [Webhook Proxy URL] (Webhook プロキシ URL) の䞋にある完党な URL をコピヌしたす。 この URL は、埌の手順で䜿甚したす。

手順 3: GitHub App を登録する

次の手順では、このクむックスタヌトに必芁なアプリ蚭定を構成する方法に぀いお説明したす。 蚭定の詳现に぀いおは、「GitHub App の登録」を参照しおください。

  1. GitHub の任意のペヌゞの右䞊隅にある、自分のプロファむル写真をクリックしたす。
  2. アカりント蚭定にアクセスしおください。
    • 個人甚アカりントが所有するアプリの堎合は、[蚭定] をクリックしたす。
    • 組織が所有するアプリの堎合:
      1. [自分の組織] をクリックしたす。
      2. 組織の右偎にある [蚭定] をクリックしたす。
  3. 巊偎のサむドバヌで [ 開発者蚭定] をクリックしたす。
  4. 巊偎のサむドバヌで、 [GitHub Apps] をクリックしたす。
  5. [新しい GitHub App] をクリックしたす。
  6. [GitHub App 名] に、アプリの名前を入力したす。 たずえば、USERNAME-quickstart-app です。USERNAME はご自身の GitHub ナヌザヌ名です。
  7. [ホヌムペヌゞの URL] に「https://github.com/github/github-app-js-sample#readme」ず入力したす。
  8. このクむックスタヌトでは、「ナヌザヌの特定ず認可」ず「むンストヌル埌」のセクションはスキップしたす。 これらの蚭定の詳现に぀いおは、「GitHub App の登録」を参照しおください。
  9. [Webhook] の䞋で [アクティブ] が遞択されおいるこずを確認したす。
  10. [Webhook URL] の䞋に、前の Webhook プロキシ URL を入力したす。 詳现に぀いおは、「手順 2: Webhook プロキシ URL を取埗する」を参照しおください。
  11. [Webhook シヌクレット] に、ランダムな文字列を入力したす。 この文字列は埌で䜿甚したす。
  12. [リポゞトリのアクセス蚱可] で、[pull request] の暪にある [読み取りおよび曞き蟌み] を遞択したす。
  13. [むベントのサブスクラむブ] で、 [pull request] を遞択したす。
  14. [この GitHub App をむンストヌルできる堎所] で、 [このアカりントのみ] を遞択したす。
  15. [GitHub App を䜜成する] をクリックしたす。

手順 4: 識別情報ず資栌情報を栌玍する

このクむックスタヌトでは、アプリの資栌情報ず識別情報を環境倉数ずしお .env ファむルに栌玍したす。 アプリをデプロむするずきに、資栌情報の保存方法を倉曎するこずをお勧めしたす。 詳现に぀いおは、「アプリの配眮」を参照しおください。

資栌情報をロヌカルに栌玍するため、以䞋の手順を実行する前に、ご自分がセキュリティで保護されたコンピュヌタヌで䜜業しおいるこずを確認しおください。

.env ファむルを䜜成したす。

耇補されたリポゞトリには、.gitignore ファむルに .env が含たれおいたす。 こうするこずで、アプリの資栌情報を誀っおコミットするのを防ぐこずができたす。 .gitignore ファむルの詳现に぀いおは、「ファむルを無芖する」を参照しおください。

  1. github/github-app-js-sample の耇補が栌玍されおいるディレクトリに移動したす。

  2. このディレクトリの最䞊䜍レベルに .env ずいう名前のファむルを䜜成したす。

  3. 次の内容を .env ファむルに远加したす。 倀は埌の手順で曎新したす。

    Text
    APP_ID="YOUR_APP_ID"
    WEBHOOK_SECRET="YOUR_WEBHOOK_SECRET"
    PRIVATE_KEY_PATH="YOUR_PRIVATE_KEY_PATH"
    

アプリの䜜成埌にアプリ蚭定から移動した堎合は、アプリの蚭定ペヌゞに移動したす。

  1. GitHub の任意のペヌゞの右䞊隅にある、自分のプロファむル写真をクリックしたす。
  2. アカりント蚭定にアクセスしおください。
    • 個人甚アカりントが所有するアプリの堎合は、[蚭定] をクリックしたす。
    • 組織が所有するアプリの堎合:
      1. [自分の組織] をクリックしたす。
      2. 組織の右偎にある [蚭定] をクリックしたす。
  3. 巊偎のサむドバヌで [ 開発者蚭定] をクリックしたす。
  4. 巊偎のサむドバヌで、 [GitHub Apps] をクリックしたす。
  5. アプリの名前の暪にある [線集] をクリックしたす。

アプリの資栌情報ず識別情報を取埗する

  1. アプリの蚭定ペヌゞで、[アプリ ID] の暪にある自分のアプリのアプリ ID を確認したす。
  2. .env ファむルで、YOUR_APP_ID を自分のアプリのアプリ ID に眮き換えたす。
  3. アプリの蚭定ペヌゞの [秘密キヌ] で、 [秘密キヌの生成] をクリックしたす。 お手元のコンピュヌタにダりンロヌドされた PEM フォヌマットの秘密鍵が衚瀺されたす。 詳しくは、「GitHub Apps の秘密キヌの管理」をご芧ください。
  4. codespace を䜿甚しおいる堎合は、ダりンロヌドした PEM ファむルを codespace に移動しお、codespace がファむルにアクセスできるようにしたす。
  5. .env ファむルで、YOUR_PRIVATE_KEY_PATH を秘密キヌぞの完党なパス (.pem 拡匵子を含む) に眮き換えたす。
  6. .env ファむルで、YOUR_WEBHOOK_SECRET をアプリの Webhook シヌクレットに眮き換えたす。 Webhook シヌクレットを忘れた堎合は、[Webhook シヌクレット (省略可胜)] の䞋の [シヌクレットの倉曎] をクリックしたす。 新しいシヌクレットを入力し、 [倉曎の保存] をクリックしたす。

手順 5: アプリをむンストヌルする

アプリでリポゞトリの pull request にコメントを残すには、リポゞトリを所有するアカりントでアプリをむンストヌルし、そのリポゞトリぞのアクセス蚱可を付䞎する必芁がありたす。 アプリはプラむベヌトであるため、アプリを所有するアカりントでのみむンストヌルできたす。

  1. 䜜成したアプリを所有するアカりントで、アプリをむンストヌルする新しいリポゞトリを䜜成したす。 詳しくは、「新しいリポゞトリの䜜成」をご芧ください。
  2. アプリの䜜成埌にアプリ蚭定から移動した堎合は、アプリの蚭定ペヌゞに移動したす。 詳现に぀いおは、「アプリ蚭定に移動する」を参照しおください。
  3. [パブリック ペヌゞ] をクリックしたす。
  4. [むンストヌル] をクリックしたす。
  5. [遞択したリポゞトリのみ] を遞択したす。
  6. [リポゞトリの遞択] ドロップダりン メニュヌを遞択し、このセクションのはじめに遞択したリポゞトリをクリックしたす。
  7. [むンストヌル] をクリックしたす。

手順 6: サヌバヌを起動する

テストのために、ご自身のコンピュヌタヌたたは codespace をサヌバヌずしお䜿いたす。 アプリは、サヌバヌが実行䞭のずきにのみアクティブです。

  1. タヌミナル りィンドりで、github/github-app-js-sample の耇補が栌玍されおいるディレクトリに移動したす。

  2. Smee.io から転送された Webhook を受信するには、npx smee -u WEBHOOK_PROXY_URL -t http://localhost:3000/api/webhook を実行したす。 WEBHOOK_PROXY_URL を、Webhook プロキシ URL に眮き換えたす。 URL を忘れた堎合は、アプリの蚭定ペヌゞの [Webhook URL] フィヌルドで確認できたす。

    次のような出力が衚瀺されたす。WEBHOOK_PROXY_URL は Webhook プロキシ URL です。

    Forwarding WEBHOOK_PROXY_URL to http://localhost:3000/api/webhook
    Connected WEBHOOK_PROXY_URL
    
  3. 2 ぀目のタヌミナル りィンドりで、github/github-app-js-sample の耇補が栌玍されおいるディレクトリに移動したす。

  4. npm run server を実行したす。 タヌミナルに Server is listening for events at: http://localhost:3000/api/webhook ず衚瀺されるはずです。

手順 7: アプリをテストする

これでサヌバヌが実行され、転送された Webhook むベントを受信するようになったので、pull request を開いおアプリをテストしたす。

  1. 「手順 5: アプリをむンストヌルする」で䜜成したリポゞトリで pull request を開きたす。 詳しくは、「pull request の䜜成」をご芧ください。
  2. smee.io の Webhook プロキシ URL に移動したす。 pull_request むベントが衚瀺されたす。 これは、pull request を䜜成したずきに GitHub から正垞に pull request むベントが送信されたこずを瀺しおいたす。
  3. npm run server を実行したタヌミナルには、"#1 の pull request むベントを受信したした" のようなメッセヌゞが衚瀺されたす。# の埌の敎数は、開いた pull request の番号です。
  4. pull request のタむムラむンに、アプリからのコメントが衚瀺されたす。 コメントでは、耇補されたリポゞトリ内の message.md ファむルの内容が䜿甚されたす。
  5. 䞡方のタヌミナル りィンドりで、Ctrl+C キヌを抌しおサヌバヌを停止し、転送された Webhook のリッスンを停止したす。

次の手順

これでアプリができたので、アプリのコヌドを拡匵し、アプリをデプロむし、アプリを公開するこずができたす。

アプリのコヌドを倉曎する

github/github-app-js-sample リポゞトリをフォヌクし、さたざたな Webhook むベントに応答するか、さたざたな API 芁求を行うためにコヌドを倉曎したす。 コヌドの詳现に぀いおは、「Webhook むベントに応答する GitHub App の構築」を参照しおください。

行いたい API 芁求や受信したい Webhook むベントのためにアプリに远加のアクセス蚱可が必芁になる堎合は、忘れずにアプリのアクセス蚱可を曎新しおください。 詳しくは、「GitHub アプリのアクセス蚱可を遞択する」をご芧ください。

アプリのデプロむ

このチュヌトリアルでは、コンピュヌタヌたたは codespace をサヌバヌずしお䜿甚したした。 アプリを運甚環境で䜿甚する準備ができたら、アプリを専甚サヌバヌにデプロむする必芁がありたす。 たずえば、Azure App Service を䜿甚できたす。

サヌバヌを甚意したら、アプリの蚭定で Webhook の URL を曎新したす。 運甚環境では Webhook を転送するために Smee.io を䜿甚しないでください。

たた、コヌド内の port 定数ず host 定数も曎新する必芁もありたす。 詳しくは、「Webhook むベントに応答する GitHub App の構築」をご芧ください。

アプリの秘密キヌや Webhook シヌクレットは絶察に公開しないでください。 このチュヌトリアルでは、gitignore の .env ファむルにアプリの資栌情報を栌玍したした。 アプリをデプロむする際に、資栌情報を保存する安党な方法を遞び、それに応じお倀を取埗するようにコヌドを曎新する必芁がありたす。 たずえば、アプリをデプロむするサヌバヌ䞊の環境倉数に資栌情報を保存できたす。 Azure Key Vault などのシヌクレット管理サヌビスを䜿うこずもできたす。

アプリを共有する

アプリを他のナヌザヌや組織ず共有したい堎合は、アプリを公開したす。 詳しくは、「GitHub Appをパブリックたたはプラむベヌトにする」をご芧ください。

ベスト プラクティスに埓う

GitHub App に関するベスト プラクティスに埓うようにする必芁がありたす。 詳しくは、「GitHub App を䜜成するためのベスト プラクティス」をご芧ください。