119 lines
3.1 KiB
HTML
119 lines
3.1 KiB
HTML
{% import 'macros/forms.html' as forms %}
|
|
{% from 'macros/build_line.html' import build_table %}
|
|
|
|
{% extends "layouts/base.html" %}
|
|
|
|
{% block content %}
|
|
<h1>Builder: {{ name }}</h1>
|
|
|
|
<ul class="tabs" data-tabs="tabs">
|
|
<li class="active"><a href="#builds">Builds</a></li>
|
|
<li><a href="#slaves">Build Slaves</a></li>
|
|
<li><a href="#force-build">Force Build</a></li>
|
|
</ul>
|
|
|
|
<div class="tab-content">
|
|
<div class="active" id="builds">
|
|
<h3>Current Builds:</h3>
|
|
{% if current %}
|
|
<ul>
|
|
{% for b in current %}
|
|
<li><a href="{{ b.link }}">{{ b.num }}</a>
|
|
{% if b.when %}
|
|
ETA: {{ b.when_time }} [{{ b.when }}]
|
|
{% endif %}
|
|
|
|
{{ b.current_step }}
|
|
|
|
{% if authz.advertiseAction('stopBuild') %}
|
|
{{ forms.stop_build(b.stop_url, authz, on_all=False, short=True, label='Build') }}
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% else %}
|
|
<p>No current builds.</p>
|
|
{% endif %}
|
|
|
|
<h3>Pending Build Requests:</h3>
|
|
{% if pending %}
|
|
<ul>
|
|
{% for b in pending %}
|
|
<li>{{ b.when }}, waiting {{ b.delay }}
|
|
|
|
{% if authz.advertiseAction('cancelPendingBuild') %}
|
|
{{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=True, id=b.id) }}
|
|
{% endif %}
|
|
|
|
{% if b.num_changes < 4 %}
|
|
{% for c in b.changes %}{{ c.revision|shortrev(c.repo) }}
|
|
(<a href="{{ c.url }}">{{ c.who }}</a>){% if not loop.last %},{% endif %}
|
|
{% endfor %}
|
|
{% else %}
|
|
({{ b.num_changes }} changes)
|
|
{% endif %}
|
|
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
|
|
{% if authz.advertiseAction('cancelPendingBuild') %}
|
|
{{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=False, id='all') }}
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
<p>
|
|
No pending build requests.
|
|
</p>
|
|
{% endif %}
|
|
|
|
<h3>Recent Builds:</h3>
|
|
|
|
{{ build_table(recent) }}
|
|
</div>
|
|
|
|
<div id="slaves">
|
|
<h3>Buildslaves:</h3>
|
|
<table class="info">
|
|
{% if slaves %}
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Status</th>
|
|
<th>Admin</th>
|
|
</tr>
|
|
</thead>
|
|
{% endif %}
|
|
<tbody>
|
|
{% for s in slaves %}
|
|
<tr class="{{ loop.cycle('alt', '') }}">
|
|
<td><b><a href="{{ s.link|e }}">{{ s.name|e }}</a></b></td>
|
|
{% if s.connected %}
|
|
<td class="idle">connected</td>
|
|
<td>{{ s.admin|email if s.admin else ""}}</td>
|
|
{% else %}
|
|
<td class="offline">offline</td>
|
|
<td/>
|
|
{% endif %}
|
|
</tr>
|
|
{% else %}
|
|
<td>no slaves attached</td>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
|
|
{% if authz.advertiseAction('pingBuilder') %}
|
|
<h3>Ping slaves</h3>
|
|
{{ forms.ping_builder(builder_url+"/ping", authz) }}
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div id="force-build">
|
|
{% if authz.advertiseAction('forceBuild') %}
|
|
<h3>Force build</h3>
|
|
{{ forms.force_build(builder_url+"/force", authz, False) }}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|