206 lines
5.4 KiB
HTML
206 lines
5.4 KiB
HTML
{% extends "layouts/base.html" %}
|
|
{% import 'macros/forms.html' as forms %}
|
|
{% from "macros/change.html" import change with context %}
|
|
|
|
{% block content %}
|
|
|
|
<h1>
|
|
Builder: <a href="{{ path_to_builder }}">{{ b.getBuilder().getName() }}</a>
|
|
Build #{{ b.getNumber() }}
|
|
</h1>
|
|
|
|
<ul class="tabs" data-tabs="tabs">
|
|
<li class="active"><a href="#steps">Steps</a></li>
|
|
<li><a href="#info">Build Info</a></li>
|
|
{% if ss.changes %}
|
|
<li><a href="#changes">Changes</a></li>
|
|
{% endif %}
|
|
<li><a href="#properties">Properties</a></li>
|
|
<li><a href="#resubmit">Resubmit Build</a></li>
|
|
</ul>
|
|
|
|
<div class="tab-content">
|
|
<div class="active" id="steps">
|
|
<h3>Steps and Logfiles:</h3>
|
|
|
|
<div class="Module steps">
|
|
<ol>
|
|
{% for s in steps %}
|
|
<li>
|
|
<div class="{{ s.css_class }} result">
|
|
<a href="{{ s.link }}">{{ s.name }}</a>
|
|
{{ s.text }} <span style="float:right">{{ '( ' + s.time_to_run + ' )' if s.time_to_run else '' }}</span>
|
|
</div>
|
|
|
|
<ul>
|
|
{% set item_class = cycler('alt', '') %}
|
|
{% for l in s.logs %}
|
|
<li class="{{ item_class.next() }}"><a href="{{ l.link }}">{{ l.name }}</a></li>
|
|
{% else %}
|
|
<li class="{{ item_class.next() }}">- no logs -</li>
|
|
{% endfor %}
|
|
|
|
{% for u in s.urls %}
|
|
<li class="{{ item_class.next() }}"><a href="{{ u.url }}">{{ u.logname }}</a></li>
|
|
{% endfor %}
|
|
</ul>
|
|
</li>
|
|
{% endfor %}
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="info">
|
|
{% if not b.isFinished() %}
|
|
<h3>Build In Progress:</h3>
|
|
|
|
{% if when_time %}
|
|
<p>ETA: {{ when_time }} [{{ when }}]</p>
|
|
{% endif %}
|
|
|
|
{{ current_step }}
|
|
|
|
{% if authz.advertiseAction('stopBuild') %}
|
|
<h3>Stop Build</h3>
|
|
{{ forms.stop_build(build_url+"/stop", authz, on_all=False, short=False, label='This Build') }}
|
|
{% endif %}
|
|
{% else %}
|
|
<h3>Results:</h3>
|
|
|
|
<p class="{{ result_css }} result">
|
|
{{ b.getText()|join(' ')|capitalize }}
|
|
</p>
|
|
|
|
{% if b.getTestResults() %}
|
|
<h3><a href="{{ tests_link }}"/></h3>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
<h3>SourceStamp:</h3>
|
|
|
|
<table class="zebra-striped">
|
|
{% set ss_class = cycler('alt','') %}
|
|
|
|
{% if ss.project %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Project</td><td>{{ ss.project|projectlink }}</td></tr>
|
|
{% endif %}
|
|
|
|
{% if ss.repository %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Repository</td><td>{{ ss.repository|repolink }}</td></tr>
|
|
{% endif %}
|
|
|
|
{% if ss.branch %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Branch</td><td>{{ ss.branch|e }}</td></tr>
|
|
{% endif %}
|
|
|
|
{% if ss.revision %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Revision</td><td>{{ ss.revision|revlink(ss.repository) }}</td></tr>
|
|
{% endif %}
|
|
|
|
{% if got_revision %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Got Revision</td><td>{{ got_revision|revlink(ss.repository) }}</td></tr>
|
|
{% endif %}
|
|
|
|
{% if ss.patch %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Patch</td><td>YES</td></tr>
|
|
{% endif %}
|
|
|
|
{% if ss.changes %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left">Changes</td><td>see below</td></tr>
|
|
{% endif %}
|
|
|
|
{% if most_recent_rev_build %}
|
|
<tr class="{{ ss_class.next() }}"><td class="left" colspan="2">Build of most recent revision</td></tr>
|
|
{% endif %}
|
|
|
|
</table>
|
|
|
|
<h3>BuildSlave:</h3>
|
|
|
|
{% if slave_url %}
|
|
<a href="{{ slave_url|e }}">{{ b.getSlavename()|e }}</a>
|
|
{% else %}
|
|
{{ b.getSlavename()|e }}
|
|
{% endif %}
|
|
|
|
<h3>Reason:</h3>
|
|
<p>
|
|
{{ b.getReason()|e }}
|
|
</p>
|
|
|
|
<h3>Blamelist:</h3>
|
|
|
|
{% if responsible_users %}
|
|
<ol>
|
|
{% for u in responsible_users %}
|
|
<li class="{{ loop.cycle('alt', '') }}">{{ u|user }}</li>
|
|
{% endfor %}
|
|
</ol>
|
|
{% else %}
|
|
<p>no responsible users</p>
|
|
{% endif %}
|
|
|
|
<h3>Timing:</h3>
|
|
<table>
|
|
<tr class="alt"><td class="left">Start</td><td>{{ start }}</td></tr>
|
|
{% if end %}
|
|
<tr><td class="left">End</td><td>{{ end }}</td></tr>
|
|
{% endif %}
|
|
<tr {{ 'class="alt"' if end else '' }}><td class="left">Elapsed</td><td>{{ elapsed }}</td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="properties">
|
|
<h3>Build Properties:</h3>
|
|
|
|
<table class="zebra-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Value</th>
|
|
<th>Source</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{% for p in properties %}
|
|
<tr class="{{ loop.cycle('alt', '') }}">
|
|
<td class="left">{{ p.name|e }}</td>
|
|
{% if p.short_value %}
|
|
<td>{{ p.short_value|e }} .. [property value too long]</td>
|
|
{% else %}
|
|
<td>{{ p.value|e }}</td>
|
|
{% endif %}
|
|
<td>{{ p.source|e }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="resubmit">
|
|
{% if authz.advertiseAction('forceBuild') %}
|
|
<h3>Resubmit Build</h3>
|
|
{{ forms.rebuild_build(build_url+"/rebuild", authz, exactly, ss) }}
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% if ss.changes %}
|
|
<div id="changes">
|
|
<div class="span16">
|
|
<h3>All Changes:</h3>
|
|
<ol>
|
|
{% for c in ss.changes %}
|
|
<li><h3>Change #{{ c.number }}</h3>
|
|
{{ change(c.asDict()) }}
|
|
</li>
|
|
{% else %}
|
|
<li>no changes</li>
|
|
{% endfor %}
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endblock %}
|