diff options
author | FuXiaoHei <fuxiaohei@vip.qq.com> | 2024-08-10 08:40:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-10 08:40:41 +0800 |
commit | df27846628fc0a8a20f59fc60ca4e0107585ea05 (patch) | |
tree | 8497e7810ea2014f7d73f92f8d4a0c3a85c786ee /routers/web/repo/actions/view.go | |
parent | 42841aab59640262ed3b873d86980b0bb5d869ae (diff) | |
download | gitea-df27846628fc0a8a20f59fc60ca4e0107585ea05.tar.gz gitea-df27846628fc0a8a20f59fc60ca4e0107585ea05.zip |
Show latest run when visit /run/latest (#31808)
Proposal from
https://github.com/go-gitea/gitea/issues/27911#issuecomment-2271982172
When visit latest run path, such as
`/{user}/{repo}/actions/runs/latest`. It renders latest run instead of
index=0 currently.
Diffstat (limited to 'routers/web/repo/actions/view.go')
-rw-r--r-- | routers/web/repo/actions/view.go | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/routers/web/repo/actions/view.go b/routers/web/repo/actions/view.go index 84319fc860..6b42289164 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,6 @@ func getRunJobs(ctx *context_module.Context, runIndex, jobIndex int64) (*actions return nil, nil } run.Repo = ctx.Repo.Repository - jobs, err := actions_model.GetRunJobsByRunID(ctx, run.ID) if err != nil { ctx.Error(http.StatusInternalServerError, err.Error()) @@ -550,7 +559,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 +597,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 +615,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) |