feat(healthcheck/releasetag): recommended tag listcheck
Some checks failed
build / build (push) Failing after 32s
build / trigger-build-image (push) Has been skipped
build / build (pull_request) Failing after 35s
build / trigger-build-image (pull_request) Has been skipped

This commit is contained in:
zzjc1234 2024-10-11 19:19:29 +08:00
parent b46e22471f
commit 1e0cbb48f0

View File

@ -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
}