aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web/repo/actions/view.go
diff options
context:
space:
mode:
authorFuXiaoHei <fuxiaohei@vip.qq.com>2024-08-10 08:40:41 +0800
committerGitHub <noreply@github.com>2024-08-10 08:40:41 +0800
commitdf27846628fc0a8a20f59fc60ca4e0107585ea05 (patch)
tree8497e7810ea2014f7d73f92f8d4a0c3a85c786ee /routers/web/repo/actions/view.go
parent42841aab59640262ed3b873d86980b0bb5d869ae (diff)
downloadgitea-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.go29
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)