Skip to main content

GitHub Enterprise Server で GitHub App を使用できるようにする

GitHub Enterprise Server インスタンスで GitHub App を使用するには、追加の手順をいくつか行う必要があります。

GitHub Enterprise Server の GitHub Apps の開発について

所属していない GitHub Enterprise Server インスタンス内の Organization で GitHub App を使用できるようにする場合は、次の手順を行う必要があります。

GitHub Enterprise Server アクセスが重要な場合は、代わりに GitHub Actions のカスタム アクションがニーズに合うかどうかを検討してください。 パブリック アクションは、GitHub Connect を使う GitHub Enterprise Server インスタンスで使用できます。 詳しくは、GitHub Enterprise Server ドキュメントの「GitHub Connect を使用して GitHub.com アクションへの自動アクセスを可能にする」をご覧ください。

各 GitHub Enterprise Server インスタンスでは、独自の GitHub App を登録する必要がある

GitHub Enterprise Server インスタンスが所有する組織は、GitHub.com や別の GitHub Enterprise Server インスタンスに登録されている GitHub Apps をインストールできません。 代わりに、そのインスタンスで使えるよう独自の GitHub App を登録してインストールする必要があります。

  1. アプリ開発者はマニフェストまたは URL パラメーターを作成します。 詳細については、「マニフェストから GitHub App を登録する」および「URL パラメーターを使って GitHub App を登録する」を参照してください。

  2. アプリ開発者は、マニフェストまたは URL パラメーターを、アプリを使う GitHub Enterprise Server 管理者と共有します。 同じマニフェストまたは URL パラメーターを複数の GitHub Enterprise Server インスタンスと共有できます。

  3. この例では組織の所有者はリストまたはURLパラメータを使用してGitHub Appに登録します。

  4. Organization によって、登録された GitHub App がインストールされます。

    必要に応じて、Organization で GitHub App をパブリックにした場合、インスタンス内の他の Organization でも GitHub App をインストールできます。 インスタンス全体に GitHub App をインストールする方法はありません。インスタンス内の Organization にのみインストールできます。

アプリ コードで、インスタンスの GitHub App 資格情報にアクセスできる必要があります

アプリのコードには、GitHub Enterprise Server インスタンスで登録した GitHub App の資格情報が必要です。 また、インスタンスのホスト名も必要です。 2 つのオプションがあり、インスタンスから資格情報とホスト名を取得するか、GitHub Enterprise Server の顧客にアプリのセルフホスト可能なバージョンのホストと管理を任せます。

GitHub Enterprise Server インスタンスから資格情報を取得する

インスタンスでは、GitHub App の資格情報とホスト名をアプリ開発者と共有できます。 サイト管理者は、アプリ開発者を信頼している場合にのみ、この操作を実行してください。 その後、アプリ コードでは、実行されているアクションに応じて適切な資格情報を使用できます。 アプリ開発者は、適切な資格情報セットを使用し、データが漏洩しないように予防措置を講じる必要があります。

長所:

  • アプリ開発者は、アプリが実行されるインフラストラクチャを制御します。
  • アプリ開発者は、アプリの更新をより詳細に制御できます。
  • アプリ開発者は、アプリのパフォーマンスについて、より多くの分析情報を得ることができます。

短所:

  • アプリ開発者は、インスタンスからデータが漏洩しないように予防措置を講じる必要があります。
  • アプリケーションがインスタンスに到達するには、場合によってはサイト管理者がファイアウォールの例外を開く必要があり、そうすることを嫌がる可能性があります。

GitHub Enterprise Server の顧客にアプリのセルフホスト可能なバージョンのホストと管理を任せる

アプリの開発者は、セルフホスト可能なバージョンのアプリを提供できます。 その場合、サイト管理者は、アプリ開発者のセットアップとインストールの手順に従ってアプリをホストできます。

アプリのセルフホスト可能なバージョンを作成して共有する方法は、アプリの開発者に委ねられており、アプリで使われているテクノロジに依存します。

長所:

  • インスタンスでは、アプリの資格情報を共有していないため、より高い安全性を維持できます。
  • アプリ開発者は、インスタンスからデータが漏洩することを心配する必要はありません。

短所:

  • アプリ開発者は、サイト管理者がアプリのインフラストラクチャを提供し、正しく設定していることを当てにすることになります。
  • アプリ コードに対する更新プログラムのリリースは、より複雑になる可能性があります。
  • アプリ開発者は、アプリのパフォーマンスに関する可視性を失う可能性があります。

アプリ コードで正しい URL を使用する必要がある

GitHub Enterprise Server では、GitHub Free、GitHub Pro、GitHub Team、GitHub Enterprise Cloud とは異なる URL が使用されます。 GitHub Enterprise Server インスタンスで動作しているかどうかに応じて、適切な URL を使用するようにアプリ コードを更新する必要があります。 HOSTNAME を、GitHub Enterprise Server インスタンスのホスト名に置き換えてください。

GitHub Free
GitHub Pro
GitHub Team
GitHub Enterprise Cloud
GitHub Enterprise Server
https://api.github.comhttps://HOSTNAME/api/v3
https://api.github.com/graphqlhttps://HOSTNAME/api/v3/graphql
https://github.com/login/oauth/authorizehttps://HOSTNAME/login/oauth/authorize
https://github.com/login/oauth/access_tokenhttps://HOSTNAME/login/oauth/access_token

アプリ コードでは機能の違いに注意する必要がある

新しい REST API エンドポイント、GraphQL オブジェクト、Webhook は、GitHub Free、GitHub Pro、GitHub Team、GitHub Enterprise Cloud より後の日に GitHub Enterprise Server にリリースされます。 さらに、GitHub Enterprise Server には複数のバージョンがあり、古いバージョンでは REST API エンドポイント、GraphQL オブジェクト、Webhook が異なる場合があります。

そのため、アプリ コードではこれらの違いに注意する必要があります。 API 応答と Webhook ペイロードには、扱っているバージョンを判断するのに役立つ GitHub Enterprise Server ペイロードの x-github-enterprise-version ヘッダーが含まれています。

各 GitHub Enterprise Server インスタンスでレート制限を構成できる

各 GitHub Enterprise Server インスタンスで独自のレート制限を構成できます。 アプリがレート制限に達しており、既にレート制限を超えないように予防措置を講じている場合は、GitHub Enterprise Server インスタンスの管理者に問い合わせてください。