如何知道是否通过github api

时间:2019-05-09 21:36:31

标签: github github-api

基于此api: https://developer.github.com/v3/pulls/#get-a-single-pull-request

我可以使用响应中的state,mergable或rebaseable字段来确定某些审阅者批准了我的PR。

我还专门寻找用例,其中如果有最低要求为 2个批准审核 (如下图所示)并且拉取请求仅包含1个批准,该州仍应为未批准状态,并且一旦至少有2个批准审核员,则应返回批准状态。我可以在此用例中使用任何字段吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

有两种选择。

  1. 您要求对PR进行所有审核,并自行维护批准/审核请求的逻辑。 Link to docs
  2. 我个人使用github钩子,在提交的每条评论中,我都会检查是否为APPROVE,然后使用this advanced query syntaxsearch来批准此PR。

检查this repository以获得完整的代码示例(尤其是this function

答案 1 :(得分:1)

使用 GitHub GraphQL API,您可以在 reviewDecision 字段中查询给定存储库的 pullRequest

如果需要 2 次审核并且 PR 刚好获得 1 次批准,则 reviewDecision 的值为 REVIEW_REQUIRED

reviewDecision 属于 PullRequestReviewDecision 类型,是一个枚举,其值为 APPROVEDCHANGES_REQUESTEDREVIEW_REQUIRED

示例查询:

{
  repository(name: "gatsby", owner: "gatsbyjs") {
    pullRequest(number: 30371) {
      title
      reviewDecision
      state
      reviews(first: 100) {
        nodes {
          state
          author {
            login
          }
        }
      }
    }
  }
}

回复:

{
  "data": {
    "repository": {
      "pullRequest": {
        "title": "chore(gatsby): don't terminate dev server if graphql wasn't imported from gatsby",
        "reviewDecision": "APPROVED",
        "state": "MERGED",
        "reviews": {
          "nodes": [
            {
              "state": "APPROVED",
              "author": {
                "login": "LekoArts"
              }
            }
          ]
        }
      }
    }
  }
}

根据您的 repo 设置,检查 PR 是否已被批准可能有点复杂(例如,如果未强制执行审查并且 PR 已收到一次批准,则 reviewDecision 返回 null已请求另一次审查,正在等待)。您可能需要遍历 reviews 才能找到所需的内容。

state 也可能有用。它属于 PullRequestReviewState 类型,是一个枚举,其值为 APPROVEDCHANGES_REQUESTEDCOMMENTEDDISMISSEDPENDING