From d2030ffcc2446a74ba5a81956251df295158ec4a Mon Sep 17 00:00:00 2001 From: fuxiaohei <fuxiaohei@vip.qq.com> Date: Fri, 9 Aug 2024 13:09:45 +0800 Subject: [PATCH 1/2] parse latest run params to real run index --- models/actions/run.go | 13 +++++++++++++ routers/web/repo/actions/view.go | 31 +++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/models/actions/run.go b/models/actions/run.go index 4f886999e9cd2..37064520a213a 100644 --- a/models/actions/run.go +++ b/models/actions/run.go @@ -361,6 +361,19 @@ func GetRunByIndex(ctx context.Context, repoID, index int64) (*ActionRun, error) return run, nil } +func GetLatestRun(ctx context.Context, repoID int64) (*ActionRun, error) { + run := &ActionRun{ + RepoID: repoID, + } + has, err := db.GetEngine(ctx).Where("repo_id=?", repoID).Desc("index").Get(run) + if err != nil { + return nil, err + } else if !has { + return nil, fmt.Errorf("latest run with repo_id %d: %w", repoID, util.ErrNotExist) + } + return run, nil +} + func GetWorkflowLatestRun(ctx context.Context, repoID int64, workflowFile, branch, event string) (*ActionRun, error) { var run ActionRun q := db.GetEngine(ctx).Where("repo_id=?", repoID). diff --git a/routers/web/repo/actions/view.go b/routers/web/repo/actions/view.go index 84319fc8609bb..3dc1d36cf5175 100644 --- a/routers/web/repo/actions/view.go +++ b/routers/web/repo/actions/view.go @@ -33,9 +33,19 @@ import ( "xorm.io/builder" ) +func getRunIndex(ctx *context_module.Context) int64 { + // if run param is "latest", get the latest run index + if ctx.PathParam("run") == "latest" { + if run, _ := actions_model.GetLatestRun(ctx, ctx.Repo.Repository.ID); run != nil { + return run.Index + } + } + return ctx.PathParamInt64("run") +} + func View(ctx *context_module.Context) { ctx.Data["PageIsActions"] = true - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) jobIndex := ctx.PathParamInt64("job") ctx.Data["RunIndex"] = runIndex ctx.Data["JobIndex"] = jobIndex @@ -130,7 +140,7 @@ type ViewStepLogLine struct { func ViewPost(ctx *context_module.Context) { req := web.GetForm(ctx).(*ViewRequest) - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) jobIndex := ctx.PathParamInt64("job") current, jobs := getRunJobs(ctx, runIndex, jobIndex) @@ -289,7 +299,7 @@ func ViewPost(ctx *context_module.Context) { // Rerun will rerun jobs in the given run // If jobIndexStr is a blank string, it means rerun all jobs func Rerun(ctx *context_module.Context) { - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) jobIndexStr := ctx.PathParam("job") var jobIndex int64 if jobIndexStr != "" { @@ -379,7 +389,7 @@ func rerunJob(ctx *context_module.Context, job *actions_model.ActionRunJob, shou } func Logs(ctx *context_module.Context) { - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) jobIndex := ctx.PathParamInt64("job") job, _ := getRunJobs(ctx, runIndex, jobIndex) @@ -428,7 +438,7 @@ func Logs(ctx *context_module.Context) { } func Cancel(ctx *context_module.Context) { - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) _, jobs := getRunJobs(ctx, runIndex, -1) if ctx.Written() { @@ -469,7 +479,7 @@ func Cancel(ctx *context_module.Context) { } func Approve(ctx *context_module.Context) { - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) current, jobs := getRunJobs(ctx, runIndex, -1) if ctx.Written() { @@ -518,7 +528,7 @@ func getRunJobs(ctx *context_module.Context, runIndex, jobIndex int64) (*actions return nil, nil } run.Repo = ctx.Repo.Repository - + fmt.Println("-----getRunJobs", runIndex, jobIndex) jobs, err := actions_model.GetRunJobsByRunID(ctx, run.ID) if err != nil { ctx.Error(http.StatusInternalServerError, err.Error()) @@ -528,6 +538,7 @@ func getRunJobs(ctx *context_module.Context, runIndex, jobIndex int64) (*actions ctx.Error(http.StatusNotFound) return nil, nil } + fmt.Println("-----getRunJobs", len(jobs)) for _, v := range jobs { v.Run = run @@ -550,7 +561,7 @@ type ArtifactsViewItem struct { } func ArtifactsView(ctx *context_module.Context) { - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) run, err := actions_model.GetRunByIndex(ctx, ctx.Repo.Repository.ID, runIndex) if err != nil { if errors.Is(err, util.ErrNotExist) { @@ -588,7 +599,7 @@ func ArtifactsDeleteView(ctx *context_module.Context) { return } - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) artifactName := ctx.PathParam("artifact_name") run, err := actions_model.GetRunByIndex(ctx, ctx.Repo.Repository.ID, runIndex) @@ -606,7 +617,7 @@ func ArtifactsDeleteView(ctx *context_module.Context) { } func ArtifactsDownloadView(ctx *context_module.Context) { - runIndex := ctx.PathParamInt64("run") + runIndex := getRunIndex(ctx) artifactName := ctx.PathParam("artifact_name") run, err := actions_model.GetRunByIndex(ctx, ctx.Repo.Repository.ID, runIndex) From ef35fcbc3fa6e124f24ef6a83f6976db5ce22181 Mon Sep 17 00:00:00 2001 From: fuxiaohei <fuxiaohei@vip.qq.com> Date: Fri, 9 Aug 2024 13:11:29 +0800 Subject: [PATCH 2/2] clean print message --- routers/web/repo/actions/view.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/routers/web/repo/actions/view.go b/routers/web/repo/actions/view.go index 3dc1d36cf5175..6b422891648c9 100644 --- a/routers/web/repo/actions/view.go +++ b/routers/web/repo/actions/view.go @@ -528,7 +528,6 @@ func getRunJobs(ctx *context_module.Context, runIndex, jobIndex int64) (*actions return nil, nil } run.Repo = ctx.Repo.Repository - fmt.Println("-----getRunJobs", runIndex, jobIndex) jobs, err := actions_model.GetRunJobsByRunID(ctx, run.ID) if err != nil { ctx.Error(http.StatusInternalServerError, err.Error()) @@ -538,7 +537,6 @@ func getRunJobs(ctx *context_module.Context, runIndex, jobIndex int64) (*actions ctx.Error(http.StatusNotFound) return nil, nil } - fmt.Println("-----getRunJobs", len(jobs)) for _, v := range jobs { v.Run = run