From 1e0cbb48f0804bbf0ce9f2267de9c9212a1996cf Mon Sep 17 00:00:00 2001 From: zzjc1234 <2359047351@qq.com> Date: Fri, 11 Oct 2024 19:19:29 +0800 Subject: [PATCH 1/5] feat(healthcheck/releasetag): recommended tag listcheck --- pkg/healthcheck/tag.go | 66 +++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 13 deletions(-) diff --git a/pkg/healthcheck/tag.go b/pkg/healthcheck/tag.go index cab07ee..371f486 100644 --- a/pkg/healthcheck/tag.go +++ b/pkg/healthcheck/tag.go @@ -61,19 +61,8 @@ func getTagsFromRepo(repoPath string) ([]string, error) { return tags, nil } -func CheckTags(repoPath string, skip bool) error { - if skip { - return nil - } - tags, err := getTagsFromRepo(repoPath) - if err != nil { - return fmt.Errorf("error getting tags from repo: %v", err) - } - - target, err := getTagFromMsg() - if err != nil { - return fmt.Errorf("error getting tag from msg scope: %v", err) - } +// INFO: check whether release tag consistent with last commit msg scope +func checkConsist(tags []string, target string) (err error) { found := false for _, tag := range tags { if tag == target { @@ -86,3 +75,54 @@ func CheckTags(repoPath string, skip bool) error { } return nil } + +// INFO: check whether release tag follow the tag list we give +func checkStyle(tags []string, category string, n int) (err error) { + var prefix string + switch category { + case "exam": + prefix = "e" + case "project": + prefix = "p" + case "homework": + prefix = "h" + default: + prefix = "a" + } + target := prefix + fmt.Sprintf("%d", n) + found := false + for _, tag := range tags { + if tag == target { + found = true + break + } + } + if !found { + return fmt.Errorf("Wrong release tag '%s' or missing release tags. Please use one of '%s'.", strings.Join(tags, "', '"), target) + } + return nil +} + +func CheckTags(repoPath string, skip bool, category string, n int) error { + if skip { + return nil + } + tags, err := getTagsFromRepo(repoPath) + if err != nil { + return fmt.Errorf("error getting tags from repo: %v", err) + } + + target, err := getTagFromMsg() + if err != nil { + return fmt.Errorf("error getting tag from msg scope: %v", err) + } + err = checkConsist(tags, target) + if err != nil { + return err + } + err = checkStyle(tags, category, n) + if err != nil { + return err + } + return nil +} -- 2.30.2 From 762b1aa49df4c4966fa430f5f89877dd0559ba0a Mon Sep 17 00:00:00 2001 From: zzjc1234 <2359047351@qq.com> Date: Fri, 11 Oct 2024 19:27:26 +0800 Subject: [PATCH 2/5] fix(healthcheck/releasetag): args --- cmd/repo-health-checker/main.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmd/repo-health-checker/main.go b/cmd/repo-health-checker/main.go index 160b587..98597c5 100644 --- a/cmd/repo-health-checker/main.go +++ b/cmd/repo-health-checker/main.go @@ -46,6 +46,8 @@ func main() { repo := flag.String("repo", "", "") localList := flag.String("localList", "", "") droneBranch := flag.String("droneBranch", "", "") + releaseCategories := flag.String("releaseCategories", "", "") + releaseNumber := flag.Int("releaseNumber", 0, "") checkFileNameList := flag.String("checkFileNameList", "", "Comma-separated list of files to check.") checkFileSumList := flag.String("checkFileSumList", "", "Comma-separated list of expected checksums.") parseMultiValueFlag(&gitWhitelist, "whitelist", "") @@ -77,7 +79,7 @@ func main() { if err != nil { fmt.Printf("### Non-ASCII Characters Commit Message Check Failed:\n%s\n", err.Error()) } - err = healthcheck.CheckTags(*rootDir, *checkRelease) + err = healthcheck.CheckTags(*rootDir, *checkRelease, *releaseCategories, *releaseNumber) if err != nil { fmt.Printf("### Release Tag Check Failed:\n%s\n", err.Error()) } -- 2.30.2 From adfd33ea35a9073190d004bb0dd329e165fe42be Mon Sep 17 00:00:00 2001 From: zzjc1234 <2359047351@qq.com> Date: Sun, 13 Oct 2024 12:39:11 +0800 Subject: [PATCH 3/5] fix(healthcheck/release): style check --- cmd/repo-health-checker/main.go | 7 +++---- pkg/healthcheck/tag.go | 22 +++++----------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/cmd/repo-health-checker/main.go b/cmd/repo-health-checker/main.go index fad7c1e..2abfea6 100644 --- a/cmd/repo-health-checker/main.go +++ b/cmd/repo-health-checker/main.go @@ -39,7 +39,7 @@ var Version string // Generally, err is used for runtime errors, and checkRes is used for the result of the checks. func main() { - var gitWhitelist, metaFile []string + var gitWhitelist, metaFile, releaseTag []string showVersion := flag.Bool("version", false, "print current version") checkRelease := flag.Bool("checkRelease", true, "trigger release check") rootDir := flag.String("root", "", "") @@ -47,12 +47,11 @@ func main() { size := flag.Float64("reposize", 2, "size of the repo") localList := flag.String("localList", "", "") droneBranch := flag.String("droneBranch", "", "") - releaseCategories := flag.String("releaseCategories", "", "") - releaseNumber := flag.Int("releaseNumber", 0, "") checkFileNameList := flag.String("checkFileNameList", "", "Comma-separated list of files to check.") checkFileSumList := flag.String("checkFileSumList", "", "Comma-separated list of expected checksums.") parseMultiValueFlag(&gitWhitelist, "whitelist", "") parseMultiValueFlag(&metaFile, "meta", "") + parseMultiValueFlag(&releaseTag, "releaseTag", "Recommended tags") flag.Parse() if *showVersion { fmt.Println(Version) @@ -80,7 +79,7 @@ func main() { if err != nil { fmt.Printf("### Non-ASCII Characters Commit Message Check Failed:\n%s\n", err.Error()) } - err = healthcheck.CheckTags(*rootDir, *checkRelease, *releaseCategories, *releaseNumber) + err = healthcheck.CheckTags(*rootDir, *checkRelease, *releaseTag) if err != nil { fmt.Printf("### Release Tag Check Failed:\n%s\n", err.Error()) } diff --git a/pkg/healthcheck/tag.go b/pkg/healthcheck/tag.go index 371f486..8142d60 100644 --- a/pkg/healthcheck/tag.go +++ b/pkg/healthcheck/tag.go @@ -77,33 +77,21 @@ func checkConsist(tags []string, target string) (err error) { } // INFO: check whether release tag follow the tag list we give -func checkStyle(tags []string, category string, n int) (err error) { - var prefix string - switch category { - case "exam": - prefix = "e" - case "project": - prefix = "p" - case "homework": - prefix = "h" - default: - prefix = "a" - } - target := prefix + fmt.Sprintf("%d", n) +func checkStyle(target string, recommendTag []string) (err error) { found := false - for _, tag := range tags { + for _, tag := range recommendTag { if tag == target { found = true break } } if !found { - return fmt.Errorf("Wrong release tag '%s' or missing release tags. Please use one of '%s'.", strings.Join(tags, "', '"), target) + return fmt.Errorf("Wrong release tag '%s' or missing release tags. Please use one of '%s'.", target, strings.Join(recommendTag, "', '")) } return nil } -func CheckTags(repoPath string, skip bool, category string, n int) error { +func CheckTags(repoPath string, skip bool, recommendTag []string) error { if skip { return nil } @@ -120,7 +108,7 @@ func CheckTags(repoPath string, skip bool, category string, n int) error { if err != nil { return err } - err = checkStyle(tags, category, n) + err = checkStyle(target, recommendTag) if err != nil { return err } -- 2.30.2 From 742d1f07c000d868e54dff0432a9176d12199620 Mon Sep 17 00:00:00 2001 From: zzjc1234 <2359047351@qq.com> Date: Sun, 13 Oct 2024 12:45:02 +0800 Subject: [PATCH 4/5] fix(healthcheck/release): style check --- pkg/healthcheck/tag.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/healthcheck/tag.go b/pkg/healthcheck/tag.go index 8142d60..6ee557f 100644 --- a/pkg/healthcheck/tag.go +++ b/pkg/healthcheck/tag.go @@ -71,7 +71,7 @@ func checkConsist(tags []string, target string) (err error) { } } if !found { - return fmt.Errorf("Wrong release tag in '%s' or missing release tags. Please use '%s'.", strings.Join(tags, "', '"), target) + return fmt.Errorf("Inconsistent release tag with scope in '%s' or missing release tags. Please use '%s'.", strings.Join(tags, "', '"), target) } return nil } @@ -86,7 +86,7 @@ func checkStyle(target string, recommendTag []string) (err error) { } } if !found { - return fmt.Errorf("Wrong release tag '%s' or missing release tags. Please use one of '%s'.", target, strings.Join(recommendTag, "', '")) + return fmt.Errorf("Release tag '%s' doesn't match recommended tag list. Please use one of '%s'.", target, strings.Join(recommendTag, "', '")) } return nil } -- 2.30.2 From 367622da35b82af43adffa6d2dbc9972faefd931 Mon Sep 17 00:00:00 2001 From: zzjc1234 <2359047351@qq.com> Date: Sun, 13 Oct 2024 12:51:38 +0800 Subject: [PATCH 5/5] fix(healthcheck/release): bad function call --- cmd/repo-health-checker/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/repo-health-checker/main.go b/cmd/repo-health-checker/main.go index 2abfea6..951d76c 100644 --- a/cmd/repo-health-checker/main.go +++ b/cmd/repo-health-checker/main.go @@ -79,7 +79,7 @@ func main() { if err != nil { fmt.Printf("### Non-ASCII Characters Commit Message Check Failed:\n%s\n", err.Error()) } - err = healthcheck.CheckTags(*rootDir, *checkRelease, *releaseTag) + err = healthcheck.CheckTags(*rootDir, *checkRelease, releaseTag) if err != nil { fmt.Printf("### Release Tag Check Failed:\n%s\n", err.Error()) } -- 2.30.2