跳到主要内容

使您的GitHub App可用于GitHub Enterprise Server

为了使GitHub Enterprise Server实例能够使用您的GitHub App,您必须采取一些额外的步骤。

关于为GitHub Enterprise Server开发GitHub Apps

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

如果访问 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. 应用开发者与想要使用该应用的 GitHub Enterprise Server 管理员共享清单或 URL 参数。相同的清单或 URL 参数可以与多个 GitHub Enterprise Server 实例共享。

  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 Enterprise Server 的时间比 GitHub Free、GitHub Pro、GitHub Team 和 GitHub Enterprise Cloud 晚。此外,GitHub Enterprise Server 具有多个版本,较旧的版本可能具有不同的 REST API 端点、GraphQL 对象和 Webhook。

因此,应用代码需要了解这些差异。对于 GitHub Enterprise Server 负载,API 响应和 Webhook 负载包含x-github-enterprise-version标头,以帮助您确定正在处理的版本。

每个 GitHub Enterprise Server 实例都可以配置速率限制

每个 GitHub Enterprise Server 实例都可以配置自己的速率限制。如果您的应用达到速率限制,并且已经采取预防措施以保持在速率限制以下,则应与 GitHub Enterprise Server 实例的管理员联系。