pr: remove pending requests

Remove all pending review requests when we merge
This commit is contained in:
2025-05-13 18:34:56 +02:00
parent 6968cbc942
commit 9c3658b33e
5 changed files with 41 additions and 9 deletions

View File

@@ -113,6 +113,10 @@ type GiteaReviewRequester interface {
RequestReviews(pr *models.PullRequest, reviewer ...string) ([]*models.PullReview, error)
}
type GiteaReviewUnrequester interface {
UnrequestReview(org, repo string, id int64, reviwers ...string) error
}
type GiteaReviewer interface {
AddReviewComment(pr *models.PullRequest, state models.ReviewStateType, comment string) (*models.PullReview, error)
}
@@ -144,6 +148,7 @@ type Gitea interface {
GiteaComment
GiteaRepoFetcher
GiteaReviewRequester
GiteaReviewUnrequester
GiteaReviewer
GiteaPRFetcher
GiteaCommitFetcher
@@ -600,6 +605,14 @@ func (gitea *GiteaTransport) RequestReviews(pr *models.PullRequest, reviewers ..
return review.GetPayload(), nil
}
func (gitea *GiteaTransport) UnrequestReview(org, repo string, id int64, reviwers ...string) error {
_, err := gitea.client.Repository.RepoDeletePullReviewRequests(
repository.NewRepoDeletePullReviewRequestsParams().WithOwner(org).WithRepo(repo).WithIndex(id).WithBody(&models.PullReviewRequestOptions{
Reviewers: reviwers,
}), gitea.transport.DefaultAuthentication)
return err
}
func (gitea *GiteaTransport) AddReviewComment(pr *models.PullRequest, state models.ReviewStateType, comment string) (*models.PullReview, error) {
c, err := gitea.client.Repository.RepoCreatePullReview(
repository.NewRepoCreatePullReviewParams().

View File

@@ -210,7 +210,7 @@ func (rs *PRSet) IsApproved(gitea GiteaPRChecker, maintainers MaintainershipData
return is_reviewed
}
func (rs *PRSet) Merge(git Git) error {
func (rs *PRSet) Merge(gitea GiteaReviewUnrequester, git Git) error {
prjgit, err := rs.GetPrjGitPR()
if err != nil {
return err
@@ -313,18 +313,33 @@ func (rs *PRSet) Merge(git Git) error {
}
}
// FF all non-prj git
// FF all non-prj git and unrequest reviews.
for _, prinfo := range rs.PRs {
// remove pending review requests
repo := prinfo.PR.Base.Repo
head := prinfo.PR.Head
id := prinfo.PR.Index
reviewers := make([]string, len(prinfo.PR.RequestedReviewers))
for idx := range prinfo.PR.RequestedReviewers {
r := prinfo.PR.RequestedReviewers[idx]
if r != nil {
reviewers[idx] = r.UserName
}
}
if err := gitea.UnrequestReview(repo.Owner.UserName, repo.Name, id, reviewers...); err != nil {
LogError("Cannot unrequest reviews in PR:", repo.Owner.UserName, repo.Name, id, reviewers, ": ", err)
}
// PrjGit already merged above, so skip here.
if rs.IsPrjGitPR(prinfo.PR) {
continue
}
repo := prinfo.PR.Base.Repo
head := prinfo.PR.Head
prinfo.RemoteName, err = git.GitClone(repo.Name, rs.Config.Branch, repo.SSHURL)
PanicOnError(err)
git.GitExecOrPanic(repo.Name, "fetch", prinfo.RemoteName, head.Sha)
git.GitExecOrPanic(repo.Name, "merge", "--ff", head.Sha)
}
// push changes

View File

@@ -33,10 +33,11 @@ import (
const (
AppName = "workflow-pr"
GitAuthor = "AutoGits - pr-review"
GitEmail = "adam+autogits-pr@zombino.com"
)
var GitAuthor string
var GitEmail string
var ListPROnly bool
var PRID int64
var CurrentUser *models.User
@@ -44,6 +45,9 @@ var GitHandler common.GitHandlerGenerator
var Gitea common.Gitea
func main() {
flag.StringVar(&GitAuthor, "git-author", "AutoGits PR Review Bot", "Git commit author")
flag.StringVar(&GitEmail, "git-email", "amajer+devel-git@suse.de", "Git commit email")
workflowConfig := flag.String("config", "", "Repository and workflow definition file")
giteaUrl := flag.String("gitea-url", "https://src.opensuse.org", "Gitea instance")
rabbitUrl := flag.String("url", "amqps://rabbit.opensuse.org", "URL for RabbitMQ instance")

View File

@@ -194,7 +194,7 @@ func TestCreatePrBranch(t *testing.T) {
t.Error(buf.String())
}
os.CopyFS("/tmp/test", os.DirFS(git.GitPath))
os.CopyFS("/tmp/test", os.DirFS(git.GitPath))
git.GitExecOrPanic("prj", "reset", "--hard", "testingCreated")
rev = strings.TrimSpace(git.GitExecWithOutputOrPanic("prj", "submodule", "status", "testRepo"))[1 : len(req.Pull_Request.Head.Sha)+1]
if rev != req.Pull_Request.Head.Sha {

View File

@@ -157,7 +157,7 @@ func (o *PullRequestOpened) Process(req *common.PullRequestWebhookEvent, git com
common.LogInfo("Reviewed?", prset.IsApproved(Gitea, maintainers))
if prset.IsConsistent() && prset.IsApproved(Gitea, maintainers) {
common.LogInfo("Merging...")
if err = prset.Merge(git); err != nil {
if err = prset.Merge(Gitea, git); err != nil {
common.LogError("merge error:", err)
}
}