OLD | NEW |
| (Empty) |
1 {{define "title"}}Builder {{ .Builder.Name }}{{end}} | |
2 | |
3 {{define "head"}} | |
4 <link id="favicon" rel="shortcut icon" | |
5 type="image/png" href="/static/common/favicon/milo-32.png"> | |
6 {{end}} | |
7 | |
8 {{define "blamelist"}} | |
9 {{ if . }} | |
10 {{ $nb := len . }} | |
11 {{ if lt $nb 4 }} | |
12 {{ range $i, $c := . -}} | |
13 {{- if gt $i 0 }}, {{ end -}} | |
14 {{- if .Changelist -}} | |
15 {{- .Changelist | linkify -}} | |
16 {{- if .AuthorEmail -}} | |
17 by {{- .AuthorEmail -}} | |
18 {{- end -}} | |
19 {{- else if .AuthorEmail -}} | |
20 (<a href="{{ .CommitURL }}">{{ .AuthorEmail }}</a>) | |
21 {{- else -}} | |
22 (<a href="{{ .CommitURL }}">Unknown Author</a>) | |
23 {{- end -}} | |
24 {{- end -}} | |
25 {{- else -}} | |
26 ({{ $nb }} changes) | |
27 {{- end }} | |
28 {{ end }} | |
29 {{end}} | |
30 | |
31 {{define "body"}} | |
32 <h1>Builder <a href="{{ pagedURL .Request -1 "EMPTY" }}">{{.Builder.Name}}</a></
h1> | |
33 | |
34 <div class="prelude"> | |
35 <div class="column"> | |
36 {{ if .Builder.MachinePool }} | |
37 {{ with .Builder.MachinePool }} | |
38 <h2>Machine Pool:</h2> | |
39 <table> | |
40 <tr> | |
41 <td>Idle</td><td>{{ .Idle }}</td> | |
42 <td class="graph"> | |
43 {{ if gt .Idle 0 }} | |
44 <div class="bar idle" style="width: {{ percent .Idle .Total }}%"><
/div> | |
45 {{ end }} | |
46 </td> | |
47 </tr><tr> | |
48 <td>Busy</td><td>{{ .Busy }}</td> | |
49 <td class="graph"> | |
50 {{ if gt .Busy 0 }} | |
51 <div class="bar busy" style="width: {{ percent .Busy .Total }}%"><
/div> | |
52 {{ end }} | |
53 </td> | |
54 </tr><tr> | |
55 <td>Disconnected</td><td>{{ .Disconnected }}</td> | |
56 <td class="graph"> | |
57 {{ if gt .Disconnected 0 }} | |
58 <div class="bar disconnected" | |
59 style="width: {{ percent .Disconnected .Total }}%"></div> | |
60 {{ end }} | |
61 </td> | |
62 </tr> | |
63 </table> | |
64 <details> | |
65 <summary>{{ .Total }} bots</summary> | |
66 <table class="info"> | |
67 <tr><th>Name</th><th>Status</th></tr> | |
68 {{ range .Bots }} | |
69 <tr> | |
70 <td>{{ .Name | linkify }}</td> | |
71 <td class="status-{{ .Status.String }}">{{ .Status.String }}</td> | |
72 </tr> | |
73 {{ end }} | |
74 </table> | |
75 </details> | |
76 {{ end }} | |
77 {{ end }} | |
78 </div> | |
79 | |
80 <div class="column"> | |
81 {{ if .Builder.CurrentBuilds }} | |
82 <h2>Current Builds ({{len .Builder.CurrentBuilds}}):</h2> | |
83 <ul> | |
84 {{ range .Builder.CurrentBuilds }} | |
85 <li>{{ .Link | linkify }} | |
86 {{ with .Blame }}{{ template "blamelist" }}{{ end }} | |
87 [Running for: {{ .ExecutionTime.Duration | humanDuration }}] | |
88 {{ range .Text }} {{ . }}{{ end }} | |
89 </li> | |
90 {{ end }} | |
91 </ul> | |
92 {{ else }} | |
93 <h2>No current builds</h2> | |
94 {{ end }} | |
95 </div> | |
96 | |
97 <div class="column"> | |
98 {{ if .Builder.PendingBuilds -}} | |
99 <h2>Pending Build Requests ({{len .Builder.PendingBuilds}}):</h2> | |
100 <ul> | |
101 {{- range .Builder.PendingBuilds -}} | |
102 <li> | |
103 <small>({{- .PendingTime.Started | localTime "" }}, waiting {{ .PendingT
ime.Duration | humanDuration -}})</small> | |
104 {{- with .Blame }}{{- template "blamelist" -}}{{- end -}} | |
105 </li> | |
106 {{- end -}} | |
107 </ul> | |
108 {{ else }} | |
109 <h2>No Pending Build Requests</h2> | |
110 {{ end }} | |
111 </div> | |
112 </div> | |
113 | |
114 <div class="main"> | |
115 {{ if .Builder.FinishedBuilds }} | |
116 <h2>Recent Builds:</h2> | |
117 | |
118 <table class="info"> | |
119 <tr> | |
120 <th>Time</th> | |
121 <th>Revision</th> | |
122 <th>Result</th> | |
123 <th>Build #</th> | |
124 <th>Changes</th> | |
125 <th>Info</th> | |
126 </tr> | |
127 | |
128 {{ range .Builder.FinishedBuilds }} | |
129 <tr> | |
130 <td>{{ .ExecutionTime.Finished | localTime "" }}</td> | |
131 <td class="revision">{{ .Revision }}</td> | |
132 {{ if eq .Status.String "Success" }} | |
133 <td class="status-Success">Success</td> | |
134 {{ else if eq .Status.String "Failure" }} | |
135 <td class="status-Failure">Failed</td> | |
136 {{ else if eq .Status.String "InfraFailure" }} | |
137 <td class="status-Exception">Infra Failure</td> | |
138 {{ else if eq .Status.String "Exception" }} | |
139 <td class="status-Exception">Exception</td> | |
140 {{ else }} | |
141 <td> {{ .Status.String }} </td> | |
142 {{ end }} | |
143 <td>{{ .Link | linkify }}</td> | |
144 <td> | |
145 {{ $nb := len .Blame }} | |
146 {{ if lt $nb 4 }} | |
147 {{ range $i, $c := .Blame }} | |
148 {{ if gt $i 0 }},{{ end }} | |
149 {{ if .Changelist }} | |
150 {{ .Changelist | linkify }} | |
151 {{ if .AuthorEmail }} | |
152 by {{ .AuthorEmail }} | |
153 {{ end }} | |
154 {{ else }} | |
155 (<a href="{{ .CommitURL }}">{{ .AuthorEmail }}</a>) | |
156 {{ end }} | |
157 {{ end }} | |
158 {{ else }} | |
159 ({{ $nb }} changes) | |
160 {{ end }} | |
161 </td> | |
162 <td class="left"> | |
163 {{ range $i, $value := .Text }} | |
164 {{ if gt $i 0 }}<br>{{ end }} | |
165 {{ . }} | |
166 {{ end }} | |
167 </td> | |
168 </tr> | |
169 {{ end }} | |
170 </table> | |
171 {{ else }} | |
172 <h2>No Recent Builds</h2> | |
173 {{ end }} | |
174 </div> | |
175 | |
176 <div class="epiloge"> | |
177 {{ if .Builder.PrevCursor }}<a href="{{ pagedURL .Request 0 .Builder.PrevCurso
r }}">Prev</a>{{ end }} | |
178 (Show: | |
179 <a href="{{ pagedURL .Request -1 "" }}">default</a> | |
180 <a href="{{ pagedURL .Request 25 "" }}">25</a> | |
181 <a href="{{ pagedURL .Request 50 "" }}">50</a> | |
182 <a href="{{ pagedURL .Request 100 "" }}">100</a> | |
183 <a href="{{ pagedURL .Request 200 "" }}">200</a> | |
184 ) | |
185 {{ if .Builder.NextCursor }} | |
186 <a href="{{ pagedURL .Request 0 .Builder.NextCursor}}">Next</a> | |
187 {{ end }} | |
188 </div> | |
189 | |
190 {{end}} | |
OLD | NEW |