Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Side by Side Diff: masters/master.tryserver.infra/templates/build.html

Issue 1476173002: buildbot UI: add linkification of Rietveld issue URL to build page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: thanks,sergiyb@ Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « masters/master.tryserver.infra/builders.pyl ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 {% extends "layout.html" %}
2 {% import 'forms.html' as forms %}
3 {% from "change_macros.html" import change with context %}
4
5 {% block content %}
6
7 <h1>
8 Builder <a href="{{ path_to_builder }}">{{ b.getBuilder().getName() }}</a>
9 Build #{{ b.getNumber() }}
10 <div class="bbp_placeholder"
11 id="{{ b.getProperty('mastername') }}:{{ b.getBuilder().getName() }}:{{
12 b.getNumber() }}">
13 </div>
14 </h1>
15
16 <div class="column">
17
18 {% if not b.isFinished() %}
19 <h2>Build In Progress:</h2>
20
21 {% if when_time %}
22 <p>ETA: {{ when_time }} [{{ when }}]</p>
23 {% endif %}
24
25 {{ current_step }}
26
27 {% if authz.advertiseAction('stopBuild') %}
28 <h2>Stop Build</h2>
29 {{ forms.stop_build(build_url+"/stop", authz, on_all=False, short=False, lab el='This Build') }}
30 {% endif %}
31 {% else %}
32 <h2>Results:</h2>
33
34 <p class="{{ result_css }} result">
35 {{ b.getText()|join(' ')|capitalize }}
36 </p>
37
38 {% if b.getTestResults() %}
39 <h3><a href="{{ tests_link }}"/></h3>
40 {% endif %}
41 {% endif %}
42
43 <h2>SourceStamp:</h2>
44
45 <table class="info" width="100%">
46 {% set ss_class = cycler('alt','') %}
47
48 {% if ss.project %}
49 <tr class="{{ ss_class.next() }}"><td class="left">Project</td><td>{{ ss.proje ct|projectlink }}</td></tr>
50 {% endif %}
51
52 {% if ss.repository %}
53 <tr class="{{ ss_class.next() }}"><td class="left">Repository</td><td>{{ ss.re pository|repolink }}</td></tr>
54 {% endif %}
55
56 {% if ss.branch %}
57 <tr class="{{ ss_class.next() }}"><td class="left">Branch</td><td>{{ ss.branch |e }}</td></tr>
58 {% endif %}
59
60 {% if ss.revision %}
61 <tr class="{{ ss_class.next() }}"><td class="left">Revision</td><td>{{ ss.revi sion|revlink(ss.repository) }}</td></tr>
62 {% endif %}
63
64 {% if got_revision %}
65 <tr class="{{ ss_class.next() }}"><td class="left">Got Revision</td><td>{{ got _revision|revlink(ss.repository) }}</td></tr>
66 {% endif %}
67
68 {% if ss.patch %}
69 <tr class="{{ ss_class.next() }}"><td class="left">Patch</td><td>YES</td></tr>
70 {% endif %}
71
72 {% if ss.changes %}
73 <tr class="{{ ss_class.next() }}"><td class="left">Changes</td><td>see below</ td></tr>
74 {% endif %}
75
76 {% if most_recent_rev_build %}
77 <tr class="{{ ss_class.next() }}"><td class="left" colspan="2">Build of most r ecent revision</td></tr>
78 {% endif %}
79
80 </table>
81
82 {#
83 # TODO: turn this into a table, or some other sort of definition-list
84 # that doesn't take up quite so much vertical space
85 #}
86
87 <h2>BuildSlave:</h2>
88
89 {% if slave_url %}
90 <a href="{{ slave_url|e }}">{{ b.getSlavename()|e }}</a>
91 {% else %}
92 {{ b.getSlavename()|e }}
93 {% endif %}
94
95 <h2>Reason:</h2>
96 <p>
97 {{ b.getReason()|e }}
98 </p>
99
100 <h2>Steps and Logfiles:</h2>
101
102 {#
103 # TODO:
104 # urls = self.original.getURLs()
105 # ex_url_class = "BuildStep external"
106 # for name, target in urls.items():
107 # text.append('[<a href="%s" class="%s">%s</a>]' %
108 # (target, ex_url_class, html.escape(name)))
109 #}
110
111 {% set nest_level = -1 %}
112 {% set previous_name = "unknown step" %}
113 {% for s in steps %}
114 {# Adjust the indentation to the current step level. We maintain as an
115 # invariant that we are always in a content section (e.g. an li). #}
116 {% set step_nest = s.get('nest_level', 0) %}
117 {% if step_nest > nest_level %}
118 {% for _ in range(nest_level, step_nest - 1) %}
119 <details>
120 <summary> Nested step(s) for: {{ previous_name }}</summary>
121 <ol type="a"><li>
122 {% endfor %}
123 {% if nest_level == -1 %}
124 <ol><li>
125 {% else %}
126 <details><summary> Nested step(s) for: {{ previous_name }}</summary><ol><li>
127 {% endif %}
128 {% elif step_nest == nest_level %}
129 </li><li>
130 {% elif step_nest < nest_level %}
131 {% for _ in range(step_nest, nest_level) %}
132 </li></ol></details>
133 {% endfor %}
134 <li>
135 {% endif %}
136 {% set nest_level = step_nest %}
137
138 <div class="{{ s.css_class }} result">
139 <div class="bbp_placeholder"
140 id="{{ b.getProperty('mastername') }}:{{ b.getBuilder().getName() }}:{{
141 b.getNumber() }}:{{ s.name|replace('/', '_') }}"></div>
142 <a href="{{ s.link }}">{{ s.name }}</a>
143 {% set previous_name = s.name %}
144 {{ s.text }}&nbsp;<span style="float:right">{{ '( ' + s.time_to_run + ' )' i f s.time_to_run else '' }}</span>
145 </div>
146
147 <ul>
148 {% set item_class = cycler('alt', '') %}
149 {% for l in s.logs %}
150 <li class="{{ item_class.next() }}"><a href="{{ l.link }}">{{ l.name }}</a ></li>
151 {% else %}
152 <li class="{{ item_class.next() }}">- no logs -</li>
153 {% endfor %}
154
155 {% for u in s.urls %}
156 <li class="{{ item_class.next() }}"><a href="{{ u.url }}">{{ u.logname }}< /a></li>
157 {% endfor %}
158 </ul>
159 {% endfor %}
160
161 {# Close out all open indentation sections. #}
162 {% for _ in range(-1, nest_level) %}
163 </li></ol>
164 {% endfor %}
165
166 </div>
167 <div class="column">
168
169 <h2>Build Properties:</h2>
170
171 <table class="info BuildProperties" width="100%">
172 <tr><th>Name</th><th>Value</th><th>Source</th></tr>
173
174 {% for p in properties %}
175 <tr class="{{ loop.cycle('alt', '') }}">
176 <td class="left">{{ p.name|e }}</td>
177 <td class="middle"><abbr title="
178 {% if p.short_value %}
179 {{ p.short_value|e }} .. [property value too long]
180 {% else %}
181 {{ p.value|e }}
182 {% endif %}">
183 {% if p.short_value %}
184 {{ p.short_value|e }} .. [property value too long]
185 {% elif p.name == 'issue' %}
186 <a href="https://codereview.chromium.org/{{ p.value|e }}">
187 {{ p.value|e }}
188 </a>
189 {% else %}
190 {{ p.value|e }}
191 {% endif %}
192 </abbr></td>
193 <td>{{ p.source|e }}</td>
194 </tr>
195 {% endfor %}
196
197 </table>
198
199 <h2>Blamelist:</h2>
200
201 {% if responsible_users %}
202 <ol>
203 {% for u in responsible_users %}
204 <li class="{{ loop.cycle('alt', '') }}">{{ u|user }}</li>
205 {% endfor %}
206 </ol>
207 {% else %}
208 <p>no responsible users</p>
209 {% endif %}
210
211
212 <h2>Timing:</h2>
213 <table class="info" width="100%">
214 <tr class="alt"><td class="left">Start</td><td>{{ start }}</td></tr>
215 {% if end %}
216 <tr><td class="left">End</td><td>{{ end }}</td></tr>
217 {% endif %}
218 <tr {{ 'class="alt"' if end else '' }}><td class="left">Elapsed</td><td>{{ ela psed }}</td></tr>
219 </table>
220
221 {% if authz.advertiseAction('forceBuild') %}
222 <h3>Resubmit Build:</h3>
223 {{ forms.rebuild_build(build_url+"/rebuild", authz, exactly, ss) }}
224 {% endif %}
225
226 </div>
227
228 <br style="clear:both"/>
229
230 {% if ss.changes %}
231 <div class="column">
232 <h2>All Changes:</h2>
233 <ol>
234 {% for c in ss.changes %}
235 <li><h3>Change #{{ c.number }}</h3>
236 {{ change(c.asDict()) }}
237 </li>
238 {% else %}
239 <li>no changes</li>
240 {% endfor %}
241 </ol>
242 </div>
243 {% endif %}
244
245 {% endblock %}
OLDNEW
« no previous file with comments | « masters/master.tryserver.infra/builders.pyl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698