diff --git a/Dockerfile b/Dockerfile index 9cdfccdef589557aa70b235a3ede140237cb84b1..0a009ac5ce1a402bb13b49f6aee4b1f65cc46a1c 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 a8f05fc6c3caf2aaa3edc70a7edbe47e320e553f..7ecf9628856ba40add216ccae84ed7eabcfd8dd2 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 c83e84b0e0362588a2b49666a33d0985264a78dc..a6e8a86b15600f412dc9b5919cd6af1be94a5247 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