diff --git a/models/bots/run.go b/models/bots/run.go index ed8bfdd711..cb5c4e2dbd 100644 --- a/models/bots/run.go +++ b/models/bots/run.go @@ -8,6 +8,7 @@ import ( "context" "fmt" "hash/fnv" + "time" "code.gitea.io/gitea/core" "code.gitea.io/gitea/models/db" @@ -84,6 +85,10 @@ func (r *Run) LoadAttributes(ctx context.Context) error { return nil } +func (run *Run) TakeTime() time.Duration { + return run.EndTime.AsTime().Sub(run.StartTime.AsTime()) +} + func updateRepoRunsNumbers(ctx context.Context, repo *repo_model.Repository) error { _, err := db.GetEngine(ctx).ID(repo.ID). SetExpr("num_runs", diff --git a/modules/git/ref.go b/modules/git/ref.go index 2f459148a2..9dc2917cb8 100644 --- a/modules/git/ref.go +++ b/modules/git/ref.go @@ -41,6 +41,54 @@ func SanitizeRefPattern(name string) string { return refNamePatternInvalid.ReplaceAllString(name, "_") } +// RefName represents a git reference name +type RefName string + +func (ref RefName) IsBranch() bool { + return strings.HasPrefix(string(ref), BranchPrefix) +} + +func (ref RefName) IsTag() bool { + return strings.HasPrefix(string(ref), TagPrefix) +} + +// ShortName returns the short name of the reference name +func (ref RefName) ShortName() string { + refName := string(ref) + if strings.HasPrefix(refName, BranchPrefix) { + return strings.TrimPrefix(refName, BranchPrefix) + } + if strings.HasPrefix(refName, TagPrefix) { + return strings.TrimPrefix(refName, TagPrefix) + } + if strings.HasPrefix(refName, RemotePrefix) { + return strings.TrimPrefix(refName, RemotePrefix) + } + if strings.HasPrefix(refName, PullPrefix) && strings.IndexByte(refName[pullLen:], '/') > -1 { + return refName[pullLen : strings.IndexByte(refName[pullLen:], '/')+pullLen] + } + + return refName +} + +// RefGroup returns the group type of the reference +func (ref RefName) RefGroup() string { + refName := string(ref) + if strings.HasPrefix(refName, BranchPrefix) { + return "heads" + } + if strings.HasPrefix(refName, TagPrefix) { + return "tags" + } + if strings.HasPrefix(refName, RemotePrefix) { + return "remotes" + } + if strings.HasPrefix(refName, PullPrefix) && strings.IndexByte(refName[pullLen:], '/') > -1 { + return "pull" + } + return "" +} + // Reference represents a Git ref. type Reference struct { Name string @@ -54,43 +102,12 @@ func (ref *Reference) Commit() (*Commit, error) { return ref.repo.getCommit(ref.Object) } -// ShortName returns the short name of the reference +// ShortName returns the short name of the reference name func (ref *Reference) ShortName() string { - if ref == nil { - return "" - } - if strings.HasPrefix(ref.Name, BranchPrefix) { - return strings.TrimPrefix(ref.Name, BranchPrefix) - } - if strings.HasPrefix(ref.Name, TagPrefix) { - return strings.TrimPrefix(ref.Name, TagPrefix) - } - if strings.HasPrefix(ref.Name, RemotePrefix) { - return strings.TrimPrefix(ref.Name, RemotePrefix) - } - if strings.HasPrefix(ref.Name, PullPrefix) && strings.IndexByte(ref.Name[pullLen:], '/') > -1 { - return ref.Name[pullLen : strings.IndexByte(ref.Name[pullLen:], '/')+pullLen] - } - - return ref.Name + return RefName(ref.Name).ShortName() } // RefGroup returns the group type of the reference func (ref *Reference) RefGroup() string { - if ref == nil { - return "" - } - if strings.HasPrefix(ref.Name, BranchPrefix) { - return "heads" - } - if strings.HasPrefix(ref.Name, TagPrefix) { - return "tags" - } - if strings.HasPrefix(ref.Name, RemotePrefix) { - return "remotes" - } - if strings.HasPrefix(ref.Name, PullPrefix) && strings.IndexByte(ref.Name[pullLen:], '/') > -1 { - return "pull" - } - return "" + return RefName(ref.Name).RefGroup() } diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 95671e791a..2720ab76dc 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -472,6 +472,9 @@ func NewFuncMap() []template.FuncMap { curBranch, ) }, + "RefShortName": func(ref string) string { + return git.RefName(ref).ShortName() + }, }} } diff --git a/routers/web/repo/builds/builds.go b/routers/web/repo/builds/builds.go index 55fb5c32c0..fbcb5b099e 100644 --- a/routers/web/repo/builds/builds.go +++ b/routers/web/repo/builds/builds.go @@ -65,13 +65,16 @@ func List(ctx *context.Context) { page = 1 } + workflow := ctx.FormString("workflow") + ctx.Data["CurWorkflow"] = workflow + opts := bots_model.FindRunOptions{ ListOptions: db.ListOptions{ Page: page, PageSize: convert.ToCorrectPageSize(ctx.FormInt("limit")), }, RepoID: ctx.Repo.Repository.ID, - WorkflowFileName: ctx.FormString("workflow"), + WorkflowFileName: workflow, } if ctx.FormString("state") == "closed" { opts.IsClosed = util.OptionalBoolTrue diff --git a/templates/repo/builds/build_list.tmpl b/templates/repo/builds/build_list.tmpl index 20c2c7561d..c24527f734 100644 --- a/templates/repo/builds/build_list.tmpl +++ b/templates/repo/builds/build_list.tmpl @@ -2,22 +2,22 @@ {{range .Builds}}
  • - {{if $.CanWriteIssuesOrPulls}} -
    - - -
    - {{end}} {{template "repo/builds/status" .Status}}
    -
    +
    - #{{.Index}} {{.Title}} + {{.Title}} {{RefShortName .Ref}} - {{ $timeStr := TimeSinceUnix .Updated $.locale }} - {{$.locale.Tr "repo.builds.opened_by" $timeStr (.TriggerUser.GetDisplayName | Escape) | Safe}}
    +
    + {{if not $.CurWorkflow}}{{.WorkflowID}} {{end}}#{{.Index}}: Commit + {{SubStr .CommitSHA 0 10}}  pushed by {{.TriggerUser.GetDisplayName | Escape}} +
    +
    +
    +
    {{ TimeSinceUnix .Updated $.locale }}
    +
    {{.TakeTime}}
  • {{end}} diff --git a/templates/repo/builds/list.tmpl b/templates/repo/builds/list.tmpl index 603e07866e..0b99f17f17 100644 --- a/templates/repo/builds/list.tmpl +++ b/templates/repo/builds/list.tmpl @@ -6,10 +6,10 @@