[英]Use Search API for Pull Requests with go-github
场景:我从 GitHub 收到状态 webhook 事件。我想找到与提交相关的任何拉取请求。
StatusEvent包含提交.SHA
和.Repo
(Respository) object。这似乎足以找到适用的 PR。
问题:如果触发status
事件以响应在与提交分开的存储库中对 PR 执行的检查,则会出现问题......
尝试 1 :go-github package 包含一个带有.ListPullRequestsWithCommit方法的PullRequestsService调用此 GitHub API 方法。 不幸的是,这似乎只返回包含提交的 repo 中的 PR。 意思是,它似乎忽略了使用分叉回购的提交创建的 PR。
尝试 2 :go-github 有一个接受query
参数的SearchService.Issues方法。 使用参数type:pr SHA:<sha>
,您会遇到“支持”PR 的问题(不确定正确的术语)——无论原始回购如何。
然后,使用PullRequestsService.Get方法,您可以获得实际的PullRequest数据。
原型代码(使用风险自负):
commitSha := event.GetCommit().GetSHA()
ownerLogin := repo.GetOwner().GetLogin()
issues, _, err := client.Search.Issues(ctx, fmt.Sprintf("type:pr SHA:%s", commitSha), &github.SearchOptions{})
// if err != nil { ??? }
// if len(issues.Issues) == 0 { ??? }
issue := issue.Issue[0]
pr, _, err := client.PullRequests.Get(ctx, ownerLogin, issue.GetNumber())
// if err != nil { ??? }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.