使用 GitHub API 获取拉取请求是否通过了所有必需的状态检查

alg*_*aic 6 github github-api github-enterprise

我需要通过 GitHub API 检查拉取请求是否通过了所有必需的状态检查。我现在使用的是 GitHub Enterprise 2.8。

我知道我可以获得上次提交的所有状态检查(statuses_url在拉取请求之后)。但是,我不知道给定存储库中需要设置哪些状态检查。这是我的主要问题。

我还需要聚合这些状态检查,将它们分组context并在每个上下文中获取最新信息。没关系,但似乎是逻辑的重新实现,GitHub 在决定是否可以合并拉取请求时在内部执行。

对于我的情况,理想的情况是can_be_merged在拉取请求字段中包含类似的内容,其含义是mergeable && all required status checks passed && approved,但据我所知,没有这样的字段。

mou*_*hio 5

终于解决了这个问题!您实际上需要从受保护的分支获取信息,而不是从检查本身获取信息。以下是一些 API 详细信息:https://developer.github.com/v3/repos/branches/#list-required-status-checks-contexts-of-protected-branch

所以解决这个问题的流程是:

  1. 检查 PR 的基础分支是否受到保护,如果是;
  2. 使用上述端点来确定需要进行哪些检查;
  3. 将最新 PR 提交的检查与步骤 2 中确定的所需检查进行比较。