javascript - Github API GET Approved Pull Request 评论列表
问题描述
我正在使用 Github API 端点为评论列表开发 Github Action,但它返回整个历史记录,包括解雇和评论,但我唯一需要的是状态为“已批准”的那些。
问题是,如果 PR 有超过 100 个审查对象(每页最多 100 个),我无法找到将在下一页上的已批准对象,因为它按时间顺序返回。
有没有其他方法可以让拉取请求审查获得批准状态?
我的代码如下:
async function evaluateReviews() {
const result = await octokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews', {
owner: owner,
repo: repo,
pull_number: pullNumber
});
const numberOfApprovalsRequired = core.getInput('number-of-approvals');
const reviews = result.data
var approvals = 0
reviews.forEach((item, i) => {
if (item.state == "APPROVED") {
approvals += 1;
}
});
if (approvals >= numberOfApprovalsRequired) {
addApprovedLabel();
}
}
解决方案
我在这里发布答案,因此它可能会帮助遇到同样问题的人。
我在 Github 支持上打开了一张票,他们回答说仅检索已批准的拉取请求审查的端点无法通过 REST API 获得,但是,我可以使用他们的 GraphQL API 获得计数。
通过使用 GraphQL 将之前的请求更改为新请求,我能够准确地获得所需的内容。
这是代码。
async function evaluateReviews() {
try {
const approvedResponse = await octokit.graphql(`
query($name: String!, $owner: String!, $pull_number: Int!) {
repository(name: $name, owner: $owner) {
pullRequest(number: $pull_number) {
reviews(states: APPROVED) {
totalCount
}
}
}
}
`, {
"name": name,
"owner": owner,
"pull_number": pullNumber
});
const approvalsRequired = core.getInput('number-of-approvals');
const approvals = approvedResponse.repository.pullRequest.reviews.totalCount
if (approvals >= approvalsRequired) {
addApprovedLabel();
}
} catch (error) {
console.log(`ERROR: ${error}`);
}
}
参考:
GitHub GraphQL Explorer 上的示例:
{
repository(name: "fetch", owner: "github") {
pullRequest(number: 913) {
reviews(states: APPROVED) {
totalCount
}
}
}
}
回复:
{
"data": {
"repository": {
"pullRequest": {
"reviews": {
"totalCount": 3
}
}
}
}
}
推荐阅读
- flutter - 在 Flutter 中出现此错误:“IconData”类型不是“Color”类型的子类型
- php - 从字符串中读出预定义的值 (PHP)
- django - 如何在 Facebook 的 https://m.me/ 中使用 Social-Auth-Django-App
- python - 熊猫列多索引中的缺失值
- google-chrome - 身份 API 范围批准 UI 阻止 OAuth 验证
- spring-boot - Datastax Cassandra Java Driver 4 分页问题
- android - 在 Branch.io 中自动创建新应用程序的过程
- mysql - 在 Laravel 中构建具有多个关系的复杂查询
- http - Apache-Http-Client:保持活动超时的理想值
- django - 在 django rest 中清理 request.data