mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-05-31 20:02:09 +00:00
[FEAT]: New route to view lates run of specific workflows
This adds a new route at `/actions/workflows/{workflow}/runs/latest`, which will redirect to the latest run of the given workflow. It can be further restricted by specifying an optional `?branch={branch}` query parameter. If no branch is specified, the route defaults to using the repo's default branch. This route is meant to go hand in hand with the Badge route that returns the result of the same workflow as a badge. This route can be used to link to the run that produced that result. Fixes #2303. Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
This commit is contained in:
parent
cf1c57b681
commit
5f2d8be38e
3 changed files with 112 additions and 3 deletions
|
@ -22,6 +22,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/actions"
|
||||
"code.gitea.io/gitea/modules/base"
|
||||
context_module "code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/storage"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
@ -60,6 +61,34 @@ func ViewLatest(ctx *context_module.Context) {
|
|||
ctx.Redirect(run.HTMLURL(), http.StatusTemporaryRedirect)
|
||||
}
|
||||
|
||||
func ViewLatestWorkflowRun(ctx *context_module.Context) {
|
||||
branch := ctx.FormString("branch")
|
||||
if branch == "" {
|
||||
branch = ctx.Repo.Repository.DefaultBranch
|
||||
}
|
||||
branch = fmt.Sprintf("refs/heads/%s", branch)
|
||||
event := ctx.FormString("event")
|
||||
|
||||
workflowFile := ctx.Params("workflow_name")
|
||||
run, err := actions_model.GetLatestRunForBranchAndWorkflow(ctx, ctx.Repo.Repository.ID, branch, workflowFile, event)
|
||||
if err != nil {
|
||||
if errors.Is(err, util.ErrNotExist) {
|
||||
ctx.NotFound("GetLatestRunForBranchAndWorkflow", err)
|
||||
} else {
|
||||
log.Error("GetLatestRunForBranchAndWorkflow: %v", err)
|
||||
ctx.Error(http.StatusInternalServerError, "Unable to get latest run for workflow on branch")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
err = run.LoadAttributes(ctx)
|
||||
if err != nil {
|
||||
ctx.ServerError("LoadAttributes", err)
|
||||
return
|
||||
}
|
||||
ctx.Redirect(run.HTMLURL(), http.StatusTemporaryRedirect)
|
||||
}
|
||||
|
||||
type ViewRequest struct {
|
||||
LogCursors []struct {
|
||||
Step int `json:"step"`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue