Skip to main content

关于创建 GitHub 应用

使用 GitHub Apps 可以构建集成来自动执行流程并扩展 GitHub 的功能。

关于 GitHub Apps

GitHub App 是一种集成类型,你可以构建它来与 GitHub 交互并扩展其功能。 可以构建 GitHub App 来提供灵活性并减少流程中的冲突,而无需登录用户或创建服务帐户。

GitHub Apps 的常见用例包括:

  • 自动执行任务或后台进程
  • 支持“使用 GitHub 登录”,允许用户使用其 GitHub 帐户登录,以便在生态系统中提供其标识
  • 用作开发人员工具,允许用户登录到 GitHub App 来使用 GitHub,然后应用可以代表用户进行操作
  • 将工具或外部服务与 GitHub 集成

与 OAuth apps 一样,GitHub Apps 使用 OAuth 2.0,可以代表用户执行操作。 与 OAuth apps 不同的是,GitHub Apps 也可以独立于用户进行操作。

GitHub Apps 可以直接安装在组织和个人帐户上,并获得对特定仓库的访问权限。 它们拥有内置 web 挂钩和狭窄的特定权限。

默认情况下,只有组织所有者才可管理组织中 GitHub 的设置。 若要允许其他用户更改组织拥有的 GitHub 应用的开发人员设置,所有者可以向他们授予 GitHub 应用管理器权限。 GitHub 应用管理器无法管理第三方应用程序。 有关在组织中添加和删除 GitHub 应用管理员的详细信息,请参阅“组织中的角色”。

生成 GitHub App

若要生成 GitHub App,首先需要注册 GitHub App。 有关详细信息,请参阅“注册 GitHub 应用”。

然后,需要编写代码以向 GitHub App 添加功能。 可以使用 GitHub App 注册中的凭据向 GitHub 的 API 发出经过身份验证的请求。 若要详细了解如何为 GitHub App 编写代码,请参阅“关于为 GitHub 应用编写代码”。 若要详细了解如何发出经过身份验证的请求,请参阅“关于使用 GitHub 应用进行身份验证”。

为 GitHub App 编写代码后,需要在某个位置运行应用。 如果你的应用是网站或 Web 应用,则可以将应用托管在服务器(如 Azure 应用服务)上。 如果你的应用是客户端应用,它可能会在用户的设备上运行。

若要使用 GitHub App,必须在组织或个人帐户上安装该应用。 如果 GitHub App 是私有的,则只能在拥有 GitHub App 的帐户上进行安装。 如果 GitHub App 是公开的,则其他用户和组织可以安装该应用。 有关详细信息,请参阅“安装自己的 GitHub 应用”和“共享 GitHub 应用”。

了解要生成的 GitHub App 类型

设计 GitHub App 有多种方法可供你选择,具体取决你希望应用包含的功能。

代表用户执行操作的 GitHub Apps

如果希望应用代表用户执行操作,则应使用用户访问令牌进行身份验证。 这种类型的请求有时称为“用户到服务器”,这意味着应用将受到已授予应用的权限以及用户权限的限制。 使用此模式时,用户必须先授权应用,然后应用才能执行操作。 有关详细信息,请参阅“代表用户使用 GitHub 应用进行身份验证”。

可以使用 GitHub App 创建的一些自动化示例包括,其中应用代表用户执行操作:

  • 使用 GitHub 作为生态系统标识提供者的 GitHub App。
  • 在 GitHub 顶部添加可能对 GitHub 用户有用的服务的 GitHub App。 可以通过 GitHub Marketplace 或公开应用与其他开发人员共享应用。

以应用自身身份执行操作的 GitHub Apps

如果希望应用以应用自身身份而不是用户身份执行操作,则应使用安装访问令牌进行身份验证。 这种类型的请求有时称为“服务器到服务器”,这意味着应用将受到已授予应用的权限的限制。 有关详细信息,请参阅“验证为 GitHub 应用程序安装”。

可以使用 GitHub App 创建的一些自动化示例包括,其中应用以自身身份执行操作:

  • 使用 Webhook 响应给定一组特定条件的事件的 GitHub App。 例如,可以围绕 REST API 终结点创建自动化来审批 fine-grained personal access token 的请求,在给定特定策略的情况下批准请求。
  • 帮助存储库参与者的 GitHub App。 例如,应用可以在参与者创建拉取请求或发表评论后发布有用的资源。
  • 生成生存期较短的令牌以提供给其他 CI/CD 工具或从存储库中提取信息的 GitHub App。

响应 Webhook 的 GitHub Apps

如果希望应用响应 GitHub 上的事件,则应用应订阅 Webhook。 例如,你可能希望应用在拉取请求打开时发表评论。 有关详细信息,请参阅“将 Webhook 与 GitHub 应用配合使用”。

可以执行某些操作的 GitHub Apps

设置 GitHub App时,可以选择该应用的特定权限。 这些权限确定应用可以通过 GitHub API 执行哪些操作、应用可以代表登录用户执行哪些操作,以及应用可以接收哪些 Webhook。 有关详细信息,请参阅“为 GitHub Apps 选择权限”。