2

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

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

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

就我而言,can_be_merged在拉取请求字段中有类似的东西是理想的,意思是mergeable && all required status checks passed && approved,但据我所知,没有这样的字段。

4

2 回答 2

3

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

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

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

根据@moustachio 的回答,如果您使用的是 v4 graphql API,您可以使用

    pullRequest(...) {
      baseRef {
        refUpdateRule {
          requiredStatusCheckContexts
        }
      }
    }

无需额外的 API 请求即可获得相同的信息

于 2021-10-07T12:58:04.960 回答