From 56779b0c978d2bf13d38701abb043e0e08f7e6aa Mon Sep 17 00:00:00 2001 From: georgecao Date: Wed, 4 Aug 2021 09:45:16 +0800 Subject: [PATCH 1/2] Add frozen function to reconganize different communities. --- pkg/cibot/frozenhandler.go | 20 +++++++++++++++----- pkg/cibot/pullrequest.go | 6 +++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/pkg/cibot/frozenhandler.go b/pkg/cibot/frozenhandler.go index c7cd0dd..003eb38 100644 --- a/pkg/cibot/frozenhandler.go +++ b/pkg/cibot/frozenhandler.go @@ -35,9 +35,10 @@ type FrozenYaml struct { //FrozenBranchYaml Branch freeze configuration type FrozenBranchYaml struct { - Branch string `yaml:"branch"` - Frozen bool `yaml:"frozen"` - Owner []string `yaml:"owner"` + Branch string `yaml:"branch"` + Frozen bool `yaml:"frozen"` + Owner []string `yaml:"owner"` + Communtiy []string `yaml:"community"` } var @@ -170,6 +171,7 @@ func emptyFrozenList() { frozenFile = freezeFile{} } lock.Unlock() + glog.Info("FrozenList after empty: %v", frozenList) } func writeFrozenList(fs []FrozenBranchYaml) { @@ -179,17 +181,25 @@ func writeFrozenList(fs []FrozenBranchYaml) { frozenList = frozenList[:0] } frozenList = append(frozenList, fs...) + glog.Info("FrozenList after write: %v", frozenList) } //IsBranchFrozen Check if the branch is frozen -func IsBranchFrozen(branch string) (owner []string, isFrozen bool) { +func IsBranchFrozen(branch string, community string) (owner []string, isFrozen bool) { lock.RLock() defer lock.RUnlock() if len(frozenList) == 0 { return nil, isFrozen } for _, v := range frozenList { - if v.Branch == branch { + var isCommunityFrozen = false + for _, c := range v.Communtiy { + if c == community { + isCommunityFrozen = true + break + } + } + if v.Branch == branch && isCommunityFrozen{ isFrozen = true owner = append(owner, v.Owner...) break diff --git a/pkg/cibot/pullrequest.go b/pkg/cibot/pullrequest.go index 35d3a4c..6a79ba9 100644 --- a/pkg/cibot/pullrequest.go +++ b/pkg/cibot/pullrequest.go @@ -488,7 +488,7 @@ func (s *Server) MergePullRequest(event *gitee.NoteEvent) error { nonRequiringLabels, nonMissingLabels := s.legalLabelsForMerge(listofPrLabels) if len(nonRequiringLabels) == 0 && len(nonMissingLabels) == 0 { // current pr can be merged - if c, b := checkFrozenCanMerge(event.Author.Login, pr.Base.Ref); !b { + if c, b := checkFrozenCanMerge(event.Author.Login, pr.Base.Ref, owner); !b { //send comment to pr comment := "" if len(c) > 0 { @@ -625,8 +625,8 @@ func getSignersAndReviewers(user string, comments []gitee.PullRequestComments) ( return signers, reviewers, nil } -func checkFrozenCanMerge(commenter, branch string) ([]string, bool) { - frozen, isFrozen := IsBranchFrozen(branch) +func checkFrozenCanMerge(commenter, branch string, community string) ([]string, bool) { + frozen, isFrozen := IsBranchFrozen(branch, community) if isFrozen { canMerge := false for _, v := range frozen { -- Gitee From fd4481f439ba8a16c490224ba1ae53b2d9f890e6 Mon Sep 17 00:00:00 2001 From: georgecao Date: Wed, 4 Aug 2021 14:50:11 +0800 Subject: [PATCH 2/2] Decreace the time on creating and setting repository. --- pkg/cibot/repohandler.go | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/pkg/cibot/repohandler.go b/pkg/cibot/repohandler.go index 8c51844..390e280 100644 --- a/pkg/cibot/repohandler.go +++ b/pkg/cibot/repohandler.go @@ -389,6 +389,19 @@ func (handler *RepoHandler) addRepositoriesinGitee(owner string, repo Repository return err } glog.Infof("end to create repository: %s", *repo.Name) + // set none reviewer but not ci-bot(default) + glog.Infof("==Begin to set repo reviewer. repository: %s.", *repo.Name) + reviewerBody := gitee.SetRepoReviewer{} + reviewerBody.AccessToken = handler.Config.GiteeToken + reviewerBody.Assignees = " " + reviewerBody.Testers = " " + reviewerBody.AssigneesNumber = 0 + reviewerBody.TestersNumber = 0 + response, errex := handler.GiteeClient.RepositoriesApi.PutV5ReposOwnerRepoReviewer(handler.Context, owner, *repo.Name, reviewerBody) + if errex != nil { + glog.Errorf("Set repository reviewer info failed: %v, %s, continue.", errex, response.Status) + } + glog.Infof("==End to set repo reviewer. repository: %s.", *repo.Name) // create branch repobranchbody := gitee.CreateBranchParam{} @@ -420,7 +433,6 @@ func (handler *RepoHandler) handleBranches(community string, r Repository) error if len(r.Branches) > 0 { // using repository branches - glog.Infof("Setting repository branches: %s", *r.Name) for _, b := range r.Branches { //check yaml branches is in db var bs []database.Branches @@ -435,7 +447,6 @@ func (handler *RepoHandler) handleBranches(community string, r Repository) error continue } - glog.Infof("Branch exist, branch(%s) of repo(%s).", *b.Name, *r.Name) err = handler.changeBranchGiteeAndDb(community, r, b, bs[0]) if err != nil { glog.Errorf("Change branch(%s) of repor(%s) failed: %v", *b.Name, *r.Name, err) @@ -628,19 +639,5 @@ func (handler *RepoHandler) handleRepositorySetting(community string, r Reposito } } - // set none reviewer but not ci-bot(default) - - reviewerBody := gitee.SetRepoReviewer{} - reviewerBody.AccessToken = handler.Config.GiteeToken - reviewerBody.Assignees = " " - reviewerBody.Testers = " " - reviewerBody.AssigneesNumber = 0 - reviewerBody.TestersNumber = 0 - response, errex := handler.GiteeClient.RepositoriesApi.PutV5ReposOwnerRepoReviewer(handler.Context, community, *r.Name, reviewerBody) - if errex != nil { - glog.Errorf("Set repository reviewer info failed: %v, %s", errex, response.Status) - return errex - } - return nil } -- Gitee