feat(cmd/joj3): store output path to env var [force build]
All checks were successful
submodules sync / sync (push) Successful in 46s
build / build (push) Successful in 1m32s
build / trigger-build-image (push) Successful in 8s

This commit is contained in:
张泊明518370910136 2025-02-01 20:08:15 -05:00
parent 0390e4c4b3
commit 4e84031e84
GPG Key ID: D47306D7062CDA9D
2 changed files with 20 additions and 16 deletions

3
cmd/joj3/env/env.go vendored
View File

@ -12,6 +12,7 @@ const (
RunID = "JOJ3_RUN_ID"
CommitMsg = "JOJ3_COMMIT_MSG"
ForceQuitStageName = "JOJ3_FORCE_QUIT_STAGE_NAME"
OutputPath = "JOJ3_OUTPUT_PATH"
)
type Attribute struct {
@ -28,6 +29,7 @@ type Attribute struct {
ActorName string
ActorID string
ForceQuitStageName string
OutputPath string
}
var Attr Attribute
@ -57,4 +59,5 @@ func Set() {
os.Setenv(RunID, Attr.RunID)
os.Setenv(CommitMsg, Attr.CommitMsg)
os.Setenv(ForceQuitStageName, Attr.ForceQuitStageName)
os.Setenv(OutputPath, Attr.OutputPath)
}

View File

@ -9,7 +9,7 @@ import (
"github.com/joint-online-judge/JOJ3/cmd/joj3/env"
"github.com/joint-online-judge/JOJ3/cmd/joj3/stage"
"github.com/joint-online-judge/JOJ3/internal/conf"
internalConf "github.com/joint-online-judge/JOJ3/internal/conf"
internalStage "github.com/joint-online-judge/JOJ3/internal/stage"
)
@ -18,7 +18,7 @@ var (
confFileName string
fallbackConfFileName string
tag string
showVersion *bool
printVersion *bool
Version string = "debug"
)
@ -27,18 +27,18 @@ func init() {
flag.StringVar(&confFileName, "conf-name", "conf.json", "filename for config files")
flag.StringVar(&fallbackConfFileName, "fallback-conf-name", "", "filename for the fallback config file in conf-root, leave empty to use conf-name")
flag.StringVar(&tag, "tag", "", "tag to trigger the running, when non-empty, should equal to the scope in msg")
showVersion = flag.Bool("version", false, "print current version")
printVersion = flag.Bool("version", false, "print current version")
}
func mainImpl() (err error) {
confObj := new(conf.Conf)
conf := new(internalConf.Conf)
logger := slog.New(slog.NewTextHandler(os.Stderr, nil))
slog.SetDefault(logger)
// parse flag & conf file
flag.Parse()
if *showVersion {
if *printVersion {
fmt.Println(Version)
return nil
}
@ -46,49 +46,50 @@ func mainImpl() (err error) {
fallbackConfFileName = confFileName
}
slog.Info("start joj3", "version", Version)
commitMsg, err := conf.GetCommitMsg()
commitMsg, err := internalConf.GetCommitMsg()
if err != nil {
slog.Error("get commit msg", "error", err)
return err
}
env.Attr.CommitMsg = commitMsg
confPath, confStat, conventionalCommit, err := conf.GetConfPath(
confPath, confStat, conventionalCommit, err := internalConf.GetConfPath(
confFileRoot, confFileName, fallbackConfFileName, commitMsg, tag)
if err != nil {
slog.Error("get conf path", "error", err)
return err
}
slog.Info("try to load conf", "path", confPath)
confObj, err = conf.ParseConfFile(confPath)
conf, err = internalConf.ParseConfFile(confPath)
if err != nil {
slog.Error("parse conf", "error", err)
return err
}
env.Attr.ConfName = confObj.Name
slog.Debug("conf loaded", "conf", confObj, "joj3 version", Version)
if err := setupSlog(confObj); err != nil {
env.Attr.ConfName = conf.Name
env.Attr.OutputPath = conf.Stage.OutputPath
slog.Debug("conf loaded", "conf", conf, "joj3 version", Version)
if err := setupSlog(conf); err != nil {
slog.Error("setup slog", "error", err)
return err
}
// log conf file info
sha256, err := conf.GetSHA256(confPath)
confSHA256, err := internalConf.GetSHA256(confPath)
if err != nil {
slog.Error("get sha256", "error", err)
return err
}
slog.Info("conf info", "sha256", sha256, "modTime", confStat.ModTime(),
slog.Info("conf info", "sha256", confSHA256, "modTime", confStat.ModTime(),
"size", confStat.Size())
if err := conf.CheckExpire(confObj); err != nil {
if err := internalConf.CheckExpire(conf); err != nil {
slog.Error("conf check expire", "error", err)
return err
}
// run stages
groups := conf.MatchGroups(confObj, conventionalCommit)
groups := internalConf.MatchGroups(conf, conventionalCommit)
env.Attr.Groups = strings.Join(groups, ",")
_, forceQuitStageName, err := stage.Run(
confObj,
conf,
groups,
func(
stageResults []internalStage.StageResult,