Skip to main content

使 GitHub Apps 可用于 GitHub Enterprise Server

为了使 GitHub Enterprise Server 实例能够使用 GitHub App,必须执行一些其他步骤。

关于为 GitHub Enterprise Server 开发 GitHub Apps 的内容

如果你希望 GitHub App 对你所属的 GitHub Enterprise Server 实例中的组织可用,则必须执行以下步骤。

如果你的 GitHub App 将仅由你所属的 GitHub Enterprise Server 实例中的组织使用,则不需要执行这些步骤。 有关详细信息,请参阅“安装自己的 GitHub 应用”。

如果 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 应用使用 URL 参数注册 GitHub 应用

  2. 应用开发人员与想要使用该应用的 GitHub Enterprise Server 管理员共享清单或 URL 参数。 可以与多个 GitHub Enterprise Server 实例共享相同的清单或 URL 参数。

  3. 实例中的组织所有者可以使用清单或 URL 参数注册 GitHub App。

  4. 组织将安装他们注册的 GitHub App。

    (可选)如果组织将 GitHub App 公开,则实例中的其他组织也可以安装 GitHub App。 无法在整个实例上安装 GitHub App,只能在实例内的组织上安装。

应用代码必须能够访问实例的 GitHub App 凭据

你的应用代码将需要 GitHub Enterprise Server 实例注册的 GitHub App 的凭据。 它还需要实例的主机名。 有两个选项:从实例获取凭据和主机名,或让 GitHub Enterprise Server 客户托管并管理应用的可自托管版本。

从 GitHub Enterprise Server 实例获取凭据

实例可以与应用开发人员共享其 GitHub App 凭据和主机名。 仅当站点管理员信任应用开发人员时,才应执行此操作。 然后应用代码可以根据要执行的操作使用相应的凭据。 应用开发人员必须采取预防措施,才能使用适当的凭据集并防止数据泄露。

优点:

  • 应用开发人员控制运行应用的基础结构。
  • 应用开发人员可以更好地控制应用更新。
  • 应用开发人员可以更深入地了解应用性能。

缺点:

  • 应用开发人员必须采取预防措施,以避免从实例泄露数据。
  • 站点管理员可能需要为应用程序打开防火墙例外才能访问实例,他们可能不愿意这样做。

让 GitHub Enterprise Server 客户托管和管理应用的可自托管版本

应用开发人员可以提供其应用的可自托管版本。 然后,站点管理员可以根据应用开发人员的设置和安装说明托管应用。

创建和共享应用的可自托管版本的方法由应用开发人员决定,并取决于应用使用的技术。

优点:

  • 提高实例的安全性,因为它们不会共享其应用凭据。
  • 应用开发人员无需担心从实例泄露数据。

缺点:

  • 应用开发人员依赖于站点管理员来提供应用基础结构并完成正确的设置。
  • 向应用代码发布更新可能更复杂。
  • 应用开发人员可能会无法了解应用性能。

应用代码必须使用正确的 URL

GitHub Enterprise Server 使用的 URL 不同于 GitHub Free、GitHub Pro、GitHub Team 和 GitHub Enterprise Cloud。 应更新应用代码以使用适当的 URL,具体取决于对 GitHub Enterprise Server 实例的使用情况。 将 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 实例的管理员联系。