关于为GitHub Apps开发GitHub Enterprise Server
如果您希望您的 GitHub App 对您不属于的某个 GitHub Enterprise Server 实例中的组织可用,则必须执行以下步骤。
如果访问 GitHub Enterprise Server 很重要,请考虑改为使用针对 GitHub Actions 的自定义操作是否更适合你的需求。 可在带有GitHub Enterprise Server的GitHub Connect实例上执行公共操作。 有关详细信息,请参阅 文档中的 GitHub Enterprise Server。
每个 GitHub Enterprise Server 实例都必须注册各自的 GitHub App
由 GitHub Enterprise Server 实例拥有的组织无法安装在 GitHub Apps 或另一个 GitHub.com 实例上注册的 GitHub Enterprise Server。 而是,他们必须注册并安装自己的 GitHub App,以便在该实例上使用。
-
应用开发人员创建清单或 URL 参数。 有关详细信息,请参阅 从manifest文件注册GitHub应用 和 使用 URL 参数注册GitHub应用。
-
应用开发人员与 GitHub Enterprise Server 想要使用该应用的管理员共享清单或 URL 参数。 同一清单或 URL 参数可以与多个 GitHub Enterprise Server 实例共享。
-
实例中的组织所有者通过清单或 URL 参数注册 GitHub App。
-
该组织安装其已注册的 GitHub App。
可选地,如果该组织将 GitHub App 设为公开,则该实例中的其他组织也可以安装 GitHub App。 没有办法在整个实例上安装一个 GitHub App ,只能在实例中的组织上安装。
应用代码必须能够访问 GitHub App 实例的凭据
您的应用代码将需要由GitHub App实例注册的GitHub Enterprise Server的凭据。 它还需要实例的主机名。 有两个选项:从实例获取凭据和主机名,或者让 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:/ | https:/ |
https:/ | https:/ |
https:/ | https:/ |
https:/ | https:/ |
应用代码必须了解功能差异
新的 REST API 端点、GraphQL 对象和 Webhook 面向 GitHub Enterprise Server 的发布时间晚于 GitHub Free、GitHub Pro、GitHub Team 和 GitHub Enterprise Cloud。 此外,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 管理员交谈。