Variety of fixes all over the place
Makes buildbot more usable, but still tweaks are needed.
This commit is contained in:
124
templates/builder.html
Normal file
124
templates/builder.html
Normal file
@@ -0,0 +1,124 @@
|
||||
{% from 'build_line.html' import build_table %}
|
||||
{% import 'forms.html' as forms %}
|
||||
|
||||
{% extends "layout.html" %}
|
||||
{% block content %}
|
||||
|
||||
<h1>Builder {{ name }}</h1>
|
||||
|
||||
<p>(<a href="{{ path_to_root }}waterfall?show={{ name }}">view in waterfall</a>)</p>
|
||||
|
||||
{% if description %}
|
||||
<div class="BuilderDescription">{{ description }}</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="column">
|
||||
|
||||
{% if current %}
|
||||
<h2>Current Builds:</h2>
|
||||
<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', request) %}
|
||||
{{ forms.stop_build(b.stop_url, authz, on_all=False, short=True, label='Build') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<h2>No current builds</h2>
|
||||
{% endif %}
|
||||
|
||||
{% if pending %}
|
||||
<h2>Pending Build Requests:</h2>
|
||||
<ul>
|
||||
{% for b in pending %}
|
||||
<li><small>({{ b.when }}, waiting {{ b.delay }})</small>
|
||||
|
||||
{% if authz.advertiseAction('cancelPendingBuild', request) %}
|
||||
{{ 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|email }}</a>){% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
({{ b.num_changes }} changes)
|
||||
{% endif %}
|
||||
|
||||
{% if 'owner' in b.properties %}
|
||||
<b>Forced build</b>
|
||||
by {{b.properties['owner'][0]}}
|
||||
{% if 'reason' in b.properties %}
|
||||
<small>{{b.properties['reason'][0]}}</small>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if authz.advertiseAction('cancelPendingBuild', request) %}
|
||||
{{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=False, id='all') }}
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
<h2>No Pending Build Requests</h2>
|
||||
{% endif %}
|
||||
|
||||
<h2>Recent Builds:</h2>
|
||||
|
||||
{{ build_table(recent) }}
|
||||
|
||||
<a href="?numbuilds={{numbuilds + 5}}">Show more</a>
|
||||
|
||||
</div>
|
||||
<div class="column">
|
||||
|
||||
<h2>Buildslaves:</h2>
|
||||
<table class="table table-striped table-hover box">
|
||||
{% if slaves %}
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th>Admin</th>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% 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 %}
|
||||
{% if s.paused %}
|
||||
<td class="paused">paused</td>
|
||||
{% else %}
|
||||
<td class="idle">connected</td>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<td class="offline">offline</td>
|
||||
{% endif %}
|
||||
<td>{{ s.admin|email if s.admin else ""}}</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<td>no slaves attached</td>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% if authz.advertiseAction('pingBuilder', request) %}
|
||||
<h2>Ping slaves</h2>
|
||||
{{ forms.ping_builder(builder_url+"/ping", authz) }}
|
||||
{% endif %}
|
||||
|
||||
{% if authz.advertiseAction('forceBuild', request) and force_schedulers != {} %}
|
||||
<h2>Force build</h2>
|
||||
{{ forms.force_build(builder_url+"/force", authz, request, False, force_schedulers=force_schedulers,default_props=default_props) }}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
Reference in New Issue
Block a user