关于为 GitHub Enterprise Server 开发 GitHub 应用
如果您希望您的 GitHub 应用可供您不属于的 GitHub Enterprise Server 实例中的组织使用,则必须执行以下步骤。
如果 GitHub Enterprise Server 访问很重要,请考虑是否使用 GitHub Actions 的自定义操作来满足您的需求。公共操作在具有 GitHub Connect 的 GitHub Enterprise Server 实例上可用。有关更多信息,请参阅 GitHub Enterprise Server 文档中的“使用 GitHub Connect 启用对 GitHub.com 操作的自动访问”。
每个 GitHub Enterprise Server 实例都必须注册自己的 GitHub 应用
GitHub Enterprise Server 实例拥有的组织无法安装在 GitHub.com 或其他 GitHub Enterprise Server 实例上注册的 GitHub 应用。相反,他们必须注册并安装自己的 GitHub 应用以在该实例上使用。
-
应用开发者创建清单或 URL 参数。有关更多信息,请参阅“从清单注册 GitHub 应用”和“使用 URL 参数注册 GitHub 应用”。
-
应用开发者与想要使用该应用的 GitHub Enterprise Server 管理员共享清单或 URL 参数。相同的清单或 URL 参数可以与多个 GitHub Enterprise Server 实例共享。
-
实例中的组织所有者使用清单或 URL 参数注册 GitHub 应用。
-
组织安装他们注册的 GitHub 应用。
可选地,如果组织将 GitHub 应用公开,实例中的其他组织也可以安装该 GitHub 应用。无法在整个实例上安装 GitHub 应用,只能在实例内的组织上安装。
应用代码必须能够访问实例的 GitHub 应用凭据
您的应用代码将需要 GitHub Enterprise Server 实例注册的 GitHub 应用的凭据。它还需要实例的主机名。您有两个选择:从实例获取凭据和主机名,或者让 GitHub Enterprise Server 客户托管和管理可自托管的应用版本。
从 GitHub Enterprise Server 实例获取凭据
实例可以与应用开发者共享其 GitHub 应用凭据和主机名。站点管理员只有在信任应用开发者的情况下才能这样做。然后,应用代码可以使用适当的凭据,具体取决于它正在执行的操作。应用开发者必须采取预防措施以使用适当的凭据集,并且不泄露数据。
优点
- 应用开发者控制应用运行的基础设施。
- 应用开发者对应用更新有更多控制权。
- 应用开发者可能对应用性能有更多了解。
缺点
- 应用开发者必须采取预防措施以避免泄露来自实例的数据。
- 站点管理员可能需要为您的应用程序打开防火墙例外以访问实例,并且他们可能不愿意这样做。
让 GitHub Enterprise Server 客户托管和管理可自托管的应用版本
应用开发者可以提供其应用的可自托管版本。然后,站点管理员可以根据应用开发者的设置和安装说明托管该应用。
创建和共享可自托管应用版本的方法取决于应用开发者,并取决于应用使用的技术。
优点
- 实例保持更安全,因为他们没有共享其应用凭据。
- 应用开发者无需担心泄露来自实例的数据。
缺点
- 应用开发者依赖站点管理员为应用提供基础设施并正确设置。
- 发布应用代码更新可能更复杂。
- 应用开发者可能会失去对应用性能的可见性。
应用代码必须使用正确的 URL
GitHub Enterprise Server 使用与 GitHub Free、GitHub Pro、GitHub Team 和 GitHub Enterprise Cloud 不同的 URL。您应该更新您的应用代码以使用适当的 URL,具体取决于它是否正在与 GitHub Enterprise Server 实例一起使用。将 HOSTNAME
替换为 GitHub Enterprise Server 实例的主机名。
GitHub 免费版 GitHub Pro GitHub 团队版 GitHub 企业云 | GitHub 企业服务器 |
---|---|
https://api.github.com | https://HOSTNAME/api/v3 |
https://api.github.com/graphql | https://HOSTNAME/api/v3/graphql |
https://github.com/login/oauth/authorize | https://HOSTNAME/login/oauth/authorize |
https://github.com/login/oauth/access_token | https://HOSTNAME/login/oauth/access_token |
应用程序代码必须了解功能差异
新的 REST API 端点、GraphQL 对象和 Webhook 比 GitHub 免费版、GitHub Pro、GitHub 团队版和 GitHub 企业云更晚发布到 GitHub 企业服务器。此外,GitHub 企业服务器有多个版本,旧版本可能具有不同的 REST API 端点、GraphQL 对象和 Webhook。
因此,应用程序代码需要了解这些差异。API 响应和 Webhook 负载包含一个 x-github-enterprise-version
标头,用于 GitHub 企业服务器负载,以帮助您确定正在处理的版本。
每个 GitHub 企业服务器实例都可以配置速率限制
每个 GitHub 企业服务器实例都可以配置自己的速率限制。如果您的应用程序遇到速率限制,并且已经采取措施来保持在速率限制之下,您应该与 GitHub 企业服务器实例的管理员联系。