Skip to content
Merged
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
95ae517
Add summary and duration fields to action runs view
bircni Mar 10, 2026
c7276f6
view.go fix
bircni Mar 10, 2026
e1869b1
RepoActionView.vue fix
bircni Mar 10, 2026
435b908
Merge remote-tracking branch 'upstream/main' into feature/action-summ…
bircni Mar 10, 2026
9de453a
minor fixes
bircni Mar 10, 2026
aa2da25
enhance styling
bircni Mar 12, 2026
e0a41a0
Merge remote-tracking branch 'upstream/main' into feature/action-summ…
bircni Mar 12, 2026
c2a0218
move stuff to its own files
bircni Mar 13, 2026
c1d2224
ui enhancements
bircni Mar 13, 2026
8597f3a
fix frontend lint
bircni Mar 13, 2026
dfc257f
restore comments and fix structural regressions in ActionRunJobView.v…
bircni Mar 14, 2026
c478d9f
minor polish
bircni Mar 14, 2026
d9a8afd
Merge remote-tracking branch 'upstream/main' into feature/action-summ…
bircni Mar 14, 2026
1aa516f
Add a setter for datetime
bircni Mar 14, 2026
46cbd66
Merge branch 'main' into feature/action-summary-view
bircni Mar 16, 2026
44210f7
remove doubled stuff
bircni Mar 17, 2026
94c9dd0
route also in devtest
bircni Mar 17, 2026
afc9427
fix review
bircni Mar 17, 2026
c401ebf
preserve job view direct-child structure for fullscreen layout
bircni Mar 17, 2026
2f0c70c
Review cleanup: fix mock type inconsistency and simplify Vue template
bircni Mar 18, 2026
6727123
fix review
bircni Mar 19, 2026
208f88d
remove unused currentJobId prop and related logic.
bircni Mar 21, 2026
ce9d64d
avoid fragile logic
wxiaoguang Mar 21, 2026
25b5e6b
fix
wxiaoguang Mar 21, 2026
1f83c66
fix
wxiaoguang Mar 21, 2026
a1ad0dd
fix getRunID
wxiaoguang Mar 21, 2026
1f08265
fix getRunID
wxiaoguang Mar 21, 2026
ef121a3
fix untranslatable locale
wxiaoguang Mar 21, 2026
ef4e261
fix getCurrentRunByPathParam
wxiaoguang Mar 21, 2026
0f7b95b
fix ctx.Written check
wxiaoguang Mar 21, 2026
da13fbd
fix getActionsViewArtifacts
wxiaoguang Mar 21, 2026
00226a4
fix Rerun
wxiaoguang Mar 21, 2026
dc1c16b
Merge branch 'main' into feature/action-summary-view
wxiaoguang Mar 21, 2026
7d73810
Merge branch 'main' into feature/action-summary-view
wxiaoguang Mar 21, 2026
4c69e45
fix merge
wxiaoguang Mar 21, 2026
c4da245
fix
wxiaoguang Mar 21, 2026
85e2457
fix
wxiaoguang Mar 21, 2026
36b6711
fix
wxiaoguang Mar 21, 2026
c63e98d
fix
wxiaoguang Mar 21, 2026
d644f8f
fix
wxiaoguang Mar 21, 2026
26a5cff
test rerun
wxiaoguang Mar 21, 2026
6b326ca
test rerun
wxiaoguang Mar 21, 2026
e46ca49
Merge branch 'main' into feature/action-summary-view
wxiaoguang Mar 21, 2026
32f6f0d
remove duplicate comment
wxiaoguang Mar 21, 2026
e99ae43
fix ui
wxiaoguang Mar 22, 2026
7f82a72
fix test ui
wxiaoguang Mar 22, 2026
54aaa04
fix ui space
wxiaoguang Mar 22, 2026
e618cdd
fix layout
wxiaoguang Mar 22, 2026
c9f4e7e
remove unnecessary ref
wxiaoguang Mar 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions models/actions/artifact.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,10 @@ type ActionArtifactMeta struct {
}

// ListUploadedArtifactsMeta returns all uploaded artifacts meta of a run
func ListUploadedArtifactsMeta(ctx context.Context, runID int64) ([]*ActionArtifactMeta, error) {
func ListUploadedArtifactsMeta(ctx context.Context, repoID, runID int64) ([]*ActionArtifactMeta, error) {
arts := make([]*ActionArtifactMeta, 0, 10)
return arts, db.GetEngine(ctx).Table("action_artifact").
Where("run_id=? AND (status=? OR status=?)", runID, ArtifactStatusUploadConfirmed, ArtifactStatusExpired).
Where("repo_id=? AND run_id=? AND (status=? OR status=?)", repoID, runID, ArtifactStatusUploadConfirmed, ArtifactStatusExpired).
GroupBy("artifact_name").
Select("artifact_name, sum(file_size) as file_size, max(status) as status").
Find(&arts)
Expand Down
4 changes: 4 additions & 0 deletions options/locale/locale_en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -3709,6 +3709,10 @@
"actions.runs.not_done": "This workflow run is not done.",
"actions.runs.view_workflow_file": "View workflow file",
"actions.runs.workflow_graph": "Workflow Graph",
"actions.runs.summary": "Summary",
"actions.runs.all_jobs": "All jobs",
"actions.runs.triggered_via": "Triggered via %s",
"actions.runs.total_duration": "Total duration:",
"actions.workflow.disable": "Disable Workflow",
"actions.workflow.disable_success": "Workflow '%s' disabled successfully.",
"actions.workflow.enable": "Enable Workflow",
Expand Down
21 changes: 16 additions & 5 deletions routers/web/devtest/mock_actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,14 @@ func generateMockStepsLog(logCur actions.LogCursor, opts generateMockStepsLogOpt
}

func MockActionsView(ctx *context.Context) {
ctx.Data["RunID"] = ctx.PathParam("run")
ctx.Data["JobID"] = ctx.PathParam("job")
ctx.Data["RunID"] = ctx.PathParamInt64("run")
ctx.Data["JobID"] = ctx.PathParamInt64("job")
ctx.HTML(http.StatusOK, "devtest/repo-action-view")
}

func MockActionsRunsJobs(ctx *context.Context) {
runID := ctx.PathParamInt64("run")

req := web.GetForm(ctx).(*actions.ViewRequest)
resp := &actions.ViewResponse{}
resp.State.Run.TitleHTML = `mock run title <a href="/">link</a>`
resp.State.Run.Link = setting.AppSubURL + "/devtest/repo-action-view/runs/" + strconv.FormatInt(runID, 10)
Expand All @@ -79,6 +78,9 @@ func MockActionsRunsJobs(ctx *context.Context) {
resp.State.Run.CanDeleteArtifact = true
resp.State.Run.WorkflowID = "workflow-id"
resp.State.Run.WorkflowLink = "./workflow-link"
resp.State.Run.Duration = "1h 23m 45s"
resp.State.Run.TriggeredAt = time.Now().Add(-time.Hour).Unix()
resp.State.Run.TriggerEvent = "push"
resp.State.Run.Commit = actions.ViewCommit{
ShortSha: "ccccdddd",
Link: "./commit-link",
Expand Down Expand Up @@ -140,6 +142,17 @@ func MockActionsRunsJobs(ctx *context.Context) {
Needs: []string{"job-100", "job-101"},
})

fillViewRunResponseCurrentJob(ctx, resp)
ctx.JSON(http.StatusOK, resp)
}

func fillViewRunResponseCurrentJob(ctx *context.Context, resp *actions.ViewResponse) {
jobID := ctx.PathParamInt64("job")
if jobID == 0 {
return
}

req := web.GetForm(ctx).(*actions.ViewRequest)
var mockLogOptions []generateMockStepsLogOptions
resp.State.CurrentJob.Steps = append(resp.State.CurrentJob.Steps, &actions.ViewJobStep{
Summary: "step 0 (mock slow)",
Expand All @@ -163,7 +176,6 @@ func MockActionsRunsJobs(ctx *context.Context) {
mockLogOptions = append(mockLogOptions, generateMockStepsLogOptions{mockCountFirst: 30, mockCountGeneral: 3, groupRepeat: 3})

if len(req.LogCursors) == 0 {
ctx.JSON(http.StatusOK, resp)
return
}

Expand All @@ -189,5 +201,4 @@ func MockActionsRunsJobs(ctx *context.Context) {
} else {
time.Sleep(time.Duration(100) * time.Millisecond) // actually, frontend reload every 1 second, any smaller delay is fine
}
ctx.JSON(http.StatusOK, resp)
}
Loading
Loading