vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Make the run list say what triggered each run
57dc79afa8097830de03fc2fc2c19561470b6d36 · Keenan Nemetz · 6d ago · parent 338a19dd
Make the run list say what triggered each run The runs table said only which ref a run used, so a push, an issue event and a manual dispatch looked alike. Give each run a TriggerTitle and show it in a "Triggered by" column; the run page uses the same words. Drop the separate workflows page. The run list is where a job is found, and the run page now links the workflow definition it ran, so a second page listing the same jobs only split the answer. Show the full log viewer only while a run is going. A finished run has per-step logs, and the full log is a download rather than a second copy of every step's output.
server/web/templates/workflows.html −70
| @@ -1,70 +0,0 @@ | |||
| 1 | {{define "workflows"}} | ||
| 2 | {{template "header" .}} | ||
| 3 | {{template "repohead" (nav .Page "runs")}} | ||
| 4 | |||
| 5 | <div class="page-head"> | ||
| 6 | <div class="page-head-main"> | ||
| 7 | <h1>Workflows</h1> | ||
| 8 | <p class="page-sub">Jobs defined on <code>{{.Ref}}</code>. A push that matches a trigger queues them.</p> | ||
| 9 | </div> | ||
| 10 | <div class="page-head-actions"> | ||
| 11 | <a class="button secondary" href="/r/{{.Name}}/runs">{{icon "play"}}Runs</a> | ||
| 12 | </div> | ||
| 13 | </div> | ||
| 14 | |||
| 15 | {{range .Problems}}<div class="flash bad">{{.}}</div>{{end}} | ||
| 16 | |||
| 17 | {{if .Workflows}} | ||
| 18 | {{range .Workflows}}{{$wf := .}} | ||
| 19 | <div class="card"> | ||
| 20 | <h2>{{icon "list"}}{{.Name}}</h2> | ||
| 21 | {{if .Description}}<p>{{.Description}}</p>{{end}} | ||
| 22 | <p class="muted"><code>{{.Path}}</code> | ||
| 23 | {{if .Branches}} · branches {{join .Branches ", "}}{{end}} | ||
| 24 | {{if .Tags}} · tags {{join .Tags ", "}}{{end}} | ||
| 25 | {{if .ChangeRequest}} · changes {{join .ChangeRequest ", "}}{{end}} | ||
| 26 | {{if .Issues}} · issues {{join .Issues ", "}}{{end}} | ||
| 27 | {{if .Comments}} · comments {{join .Comments ", "}}{{end}} | ||
| 28 | {{if .Schedules}} · schedule {{join .Schedules ", "}}{{end}} | ||
| 29 | {{if .Dispatch}} · manual{{end}} | ||
| 30 | </p> | ||
| 31 | {{if .Dispatch}}<p><a class="button secondary" href="/r/{{$.Name}}/workflows/dispatch?workflow={{pathurl .Path}}">{{icon "play"}}Run workflow</a></p>{{end}} | ||
| 32 | <div class="panel"> | ||
| 33 | <table> | ||
| 34 | <thead><tr><th>Job</th><th>Runs on</th><th>Image</th><th>Steps</th><th>Outputs</th><th>Last run</th></tr></thead> | ||
| 35 | <tbody> | ||
| 36 | {{range .Jobs}} | ||
| 37 | <tr> | ||
| 38 | <td> | ||
| 39 | <a href="/r/{{$.Name}}/blob/{{esc $.Ref}}/{{pathurl $wf.Path}}">{{.Name}}</a> | ||
| 40 | {{if ne .Name .ID}}<span class="muted"><code>{{.ID}}</code></span>{{end}} | ||
| 41 | {{if .Description}}<div class="muted">{{.Description}}</div>{{end}} | ||
| 42 | </td> | ||
| 43 | <td class="muted">{{if .Labels}}{{join .Labels ", "}}{{else}}any runner{{end}}</td> | ||
| 44 | <td>{{if .Image}}<code>{{.Image}}</code>{{else}}<span class="muted">none</span>{{end}} | ||
| 45 | {{if .Network}}<div class="muted">{{if eq .Network "none"}}no network{{else}}network {{.Network}}{{end}}</div>{{end}}</td> | ||
| 46 | <td class="muted">{{.Steps}}</td> | ||
| 47 | <td class="muted">{{.Artifacts}} artifact(s){{if .Pages}} · site{{end}}</td> | ||
| 48 | <td> | ||
| 49 | {{if .Last}}<a href="/r/{{$.Name}}/runs/{{.Last.ID}}">{{.Last.Status}}</a> <span class="muted">{{since .Last.Created.Unix}}</span>{{else}}<span class="muted">never</span>{{end}} | ||
| 50 | </td> | ||
| 51 | </tr> | ||
| 52 | {{end}} | ||
| 53 | </tbody> | ||
| 54 | </table> | ||
| 55 | </div> | ||
| 56 | </div> | ||
| 57 | {{end}} | ||
| 58 | {{else if .HasCommit}} | ||
| 59 | <div class="empty-state"> | ||
| 60 | <p>No workflows on <code>{{.Ref}}</code>.</p> | ||
| 61 | <p class="muted">Add a file under <code>.vole/workflows/</code> and push to a matching branch.</p> | ||
| 62 | </div> | ||
| 63 | {{else}} | ||
| 64 | <div class="empty-state"> | ||
| 65 | <p>The repository has no commits yet.</p> | ||
| 66 | <p class="muted">Push a workflow under <code>.vole/workflows/</code> to get started.</p> | ||
| 67 | </div> | ||
| 68 | {{end}} | ||
| 69 | {{template "footer" .}} | ||
| 70 | {{end}} | ||