From 04d4065211fd25b79ee2cdeaba1b59e769b6ede6 Mon Sep 17 00:00:00 2001 From: wanghaosq Date: Fri, 10 Sep 2021 11:16:44 +0800 Subject: [PATCH] add codes for sigs migrate --- Dockerfile | 7 +- pkg/cibot/note.go | 5 + pkg/cibot/pullrequest.go | 412 +++++++++++++++++++++++++++++++++++++++ pkg/cibot/sighandler.go | 9 +- pkg/cibot/utils.go | 2 + 5 files changed, 429 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9cdfccd..0a009ac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,9 +3,10 @@ FROM golang:1.12.1-alpine3.9 AS builder COPY . /go/src/gitee.com/openeuler/ci-bot RUN apk --no-cache update && \ -apk --no-cache upgrade && \ -CGO_ENABLED=1 go build -v -o /usr/local/bin/ci-bot -ldflags="-w -s -extldflags -static" \ -gitee.com/openeuler/ci-bot/cmd/cibot + apk add git && \ + apk --no-cache upgrade && \ + CGO_ENABLED=1 go build -v -o /usr/local/bin/ci-bot -ldflags="-w -s -extldflags -static" \ + gitee.com/openeuler/ci-bot/cmd/cibot RUN mkdir -p /bot diff --git a/pkg/cibot/note.go b/pkg/cibot/note.go index a8f05fc..7ecf962 100644 --- a/pkg/cibot/note.go +++ b/pkg/cibot/note.go @@ -110,4 +110,9 @@ func (s *Server) HandleNoteEvent(event *gitee.NoteEvent) { glog.Error(err) } } + + //retry + if RegRetry.MatchString(event.Comment.Body){ + s.watchSigMaturityChange(event) + } } diff --git a/pkg/cibot/pullrequest.go b/pkg/cibot/pullrequest.go index c83e84b..a6e8a86 100644 --- a/pkg/cibot/pullrequest.go +++ b/pkg/cibot/pullrequest.go @@ -3,8 +3,13 @@ package cibot import ( "encoding/base64" "fmt" + "gopkg.in/yaml.v2" "io/ioutil" + "os" + "os/exec" + "path/filepath" "strings" + "time" "gitee.com/openeuler/ci-bot/pkg/cibot/database" "gitee.com/openeuler/go-gitee/gitee" @@ -571,6 +576,8 @@ func (s *Server) MergePullRequest(event *gitee.NoteEvent) error { glog.Errorf("unable to merge pull request. err: %v", err) return fmt.Errorf(`The pull request merge failed, please use command "/check-pr" to try again. `) } + glog.Info("call watchSigMaturityChange") + s.watchSigMaturityChange(event) } } } else { @@ -704,3 +711,408 @@ func (s *Server) checkPrHasSetReviewer(pre *gitee.PullRequestEvent) bool { } return false } + +// added codes for sigs migration +// get sig name which sig's field maturity is archived +func (s *Server) getSigFolderMigrate (sy SigsYaml) (nameList []string, err error){ + yamlFile, err := ioutil.ReadFile("/bot/community/sig/sigs.yaml") + if err != nil{ + glog.Infof("read file error: %v", err) + return nameList, err + } + err = yaml.Unmarshal(yamlFile, &sy) + if err != nil{ + glog.Infof("yaml unmarshall failed, error: %v", err) + return nameList, err + } + mapSigNameMaturity := make(map[string]string) + mapSigNameRepo := make(map[string][]string) + sigs := sy.Sigs + for _, sig :=range sigs{ + if sig.Maturity == "achived"{ + mapSigNameMaturity[sig.Name] = sig.Maturity + nameList = append(nameList, sig.Name) + for _, repo := range sig.Repositories { + mapSigNameRepo[sig.Name] = append(mapSigNameRepo[sig.Name], repo) + } + } + } + return nameList, err +} + +//check ARCHIVED Folder which sig has already exited return a exitFileList that exits in ARCHIVED folder +func (s *Server) checkSigExits()(exitFileList []string, err error){ + path := "/bot/community/sig/ARCHIVED/" + var pathUseful bool + _, err = os.Stat(path) + if err != nil && os.IsNotExist(err) { + pathUseful = false + glog.Infof("os.Stat error: %v", err) + }else{ + pathUseful = true + } + if pathUseful{ + dirs, err := ioutil.ReadDir(path) + if err != nil{ + glog.Errorf("readDir failed, %v", err) + return exitFileList, err + } + for _, dir := range dirs{ + if dir.IsDir(){ + exitFileList = append(exitFileList, dir.Name()) + } + } + }else{ + return exitFileList, nil + } + return exitFileList, err +} + +// get folder list which needs to migrate +func (s *Server) migrateFilesInSigFolder(nameList []string, exitFileList []string)(needToMigrateList []string){ + if len(exitFileList) == 0{ + for _, f := range nameList{ + needToMigrateList = append(needToMigrateList, f) + } + return + } + for _, f := range nameList{ + for i:=0;i