run.html

 1{{template "head" (printf "%s / %s" .Run.Repo .Run.Workflow)}}
 2{{$v := .Run}}{{$csrf := .CSRF}}
 3<section class="card head">
 4  <h1>{{$v.Repo}} / {{$v.Workflow}} {{template "badge" $v.Status}}</h1>
 5  {{with $v.State}}
 6  <p class="meta">
 7    {{if .Meta.Sha}}<code>{{short .Meta.Sha}}</code>{{end}}{{if .Meta.Ref}} · {{.Meta.Ref}}{{end}} · {{.Meta.Kind}} · {{ago .Created}}
 8    {{if $v.Parent}}<br>manual run for <a href="/runs/{{$v.Parent}}">{{$v.Parent}}</a>{{end}}
 9  </p>
10  {{with .End}}<p class="end s-{{.Status}}">{{.Detail}}</p>{{end}}
11  {{end}}
12</section>
13
14{{with $v.State}}{{with .Gate}}
15<section class="card gate">
16  <h2>⏸ {{if .Prompt}}{{.Prompt}}{{else}}Choose the next step{{end}}</h2>
17  {{if .Summary}}<pre class="summary">{{.Summary}}</pre>{{end}}
18  <p class="muted small">Expires {{.ExpiresAt}}</p>
19  <div class="choices">
20  {{range $i, $o := .Options}}
21    <form method="post" action="/runs/{{$v.ID}}/gate" {{if danger $o $v}}data-confirm="{{label $o $v}}?"{{end}}>
22      <input type="hidden" name="csrf" value="{{$csrf}}"><input type="hidden" name="option" value="{{inc $i}}">
23      <button class="{{if danger $o $v}}danger big{{else}}primary big{{end}}">{{label $o $v}}</button>
24      {{if and $o.Prompt (gt (len $.Run.State.Gate.Options) 1)}}<span class="small muted">{{$o.Prompt}}</span>{{end}}
25    </form>
26  {{end}}
27    <form method="post" action="/runs/{{$v.ID}}/gate">
28      <input type="hidden" name="csrf" value="{{$csrf}}"><input type="hidden" name="dismiss" value="1">
29      <button class="quiet">Dismiss</button>
30    </form>
31  </div>
32</section>
33{{end}}{{end}}
34
35{{if .Timeline}}
36<section class="card">
37  <h2>Steps</h2>
38  <ol class="timeline">
39  {{range .Timeline}}
40    <li class="s-{{.Status}}">
41      <span class="what">{{.Action}}</span> {{template "badge" .Status}}{{if .Stubbed}} <em>stubbed</em>{{end}}
42      {{if .Summary}}<pre class="summary">{{.Summary}}</pre>{{end}}
43      {{range .Attachments}}<a class="small" href="/runs/{{$v.ID}}/files/artifacts/{{.Path}}">📎 {{if .Label}}{{.Label}}{{else}}{{.Path}}{{end}}</a> {{end}}
44    </li>
45  {{end}}
46  </ol>
47</section>
48{{end}}
49
50{{if $v.Manual}}
51<section class="card actions">
52  <h2>Actions</h2>
53  {{range $v.Manual}}
54  <form method="post" action="/runs/{{$v.ID}}/actions/{{.Name}}" data-confirm="{{.Label}}?">
55    <input type="hidden" name="csrf" value="{{$csrf}}">
56    <button class="{{if eq .Style "danger"}}danger big{{else}}primary{{end}}">{{.Label}}</button>
57  </form>
58  {{end}}
59</section>
60{{end}}
61
62<section class="card">
63  <h2>Log {{if .Live}}<span class="live">● live</span>{{end}}</h2>
64  <pre class="log" id="log" {{if .Live}}data-live="/runs/{{$v.ID}}/live?after={{.Last}}"{{end}}>{{range .Lines}}<span class="l {{.Class}}">{{.Text}}</span>
65{{end}}</pre>
66  <p class="small"><a href="/api/runs/{{$v.ID}}/log.txt">plain text</a></p>
67</section>
68
69{{if and $v.State (or (eq $v.State.Status "running") (eq $v.State.Status "paused"))}}
70<form method="post" action="/runs/{{$v.ID}}/cancel" data-confirm="Cancel this run?" class="cancel">
71  <input type="hidden" name="csrf" value="{{$csrf}}"><button class="quiet">Cancel run</button>
72</form>
73{{end}}
74{{template "foot"}}