hydra/src/root/job.tt

99 lines
3.5 KiB
Plaintext
Raw Normal View History

[% WRAPPER layout.tt
title="Job $project.name:$jobset.name:$job"
starUri=c.uri_for(c.controller('Job').action_for('star'), c.req.captures)
%]
[% PROCESS common.tt %]
[% hideProjectName=1 hideJobsetName=1 hideJobName=1 %]
[% INCLUDE includeFlot %]
[% IF !jobExists(jobset, job) %]
<div class="alert alert-warning">This job is not a member of the <a
href="[%c.uri_for('/jobset' project.name jobset.name
'evals')%]">latest evaluation</a> of its jobset. This means it was
removed or had an evaluation error.</div>
[% END %]
2013-02-22 10:55:06 +00:00
<ul class="nav nav-tabs">
<li class="active"><a href="#tabs-status" data-toggle="tab">Status</a></li>
[% IF constituentJobs.size > 0 %]
<li><a href="#tabs-constituents" data-toggle="tab">Constituents</a></li>
[% END %]
<li><a href="#tabs-charts" data-toggle="tab">Charts</a></li>
<li><a href="#tabs-links" data-toggle="tab">Links</a></li>
2013-02-22 10:55:06 +00:00
</ul>
<div id="generic-tabs" class="tab-content">
2013-01-22 13:41:02 +00:00
2013-02-22 10:55:06 +00:00
<div id="tabs-status" class="tab-pane active">
[% IF lastBuilds.size != 0 %]
2014-01-10 14:20:19 +00:00
<h3>Latest builds</h3>
2013-10-03 13:14:55 +00:00
[% INCLUDE renderBuildList builds=lastBuilds
linkToAll=c.uri_for('/job' project.name jobset.name job 'all') %]
[% END %]
[% IF queuedBuilds.size != 0 %]
<h3>Queued builds</h3>
[% INCLUDE renderBuildList builds=queuedBuilds showSchedulingInfo=1 hideResultInfo=1 %]
2013-02-22 10:55:06 +00:00
[% END %]
</div>
[% IF constituentJobs.size > 0 %]
<div id="tabs-constituents" class="tab-pane">
<div class="well well-small">This is an <em>aggregate job</em>:
its success or failure is determined entirely by the result of
building its <em>constituent jobs</em>. The table below shows
the status of each constituent job for the [%
aggregates.keys.size %] most recent builds of the
aggregate.</div>
2013-10-03 13:14:55 +00:00
[% aggs = aggregates.keys.nsort.reverse %]
<table class="table table-striped table-condensed table-header-rotated">
2013-10-03 13:14:55 +00:00
<thead>
<tr>
<th>Job</th>
[% FOREACH agg IN aggs %]
<th class="rotate-45">
[% agg_ = aggregates.$agg %]
<div><span class="[% agg_.build.finished == 0 ? "text-info" : (agg_.build.buildstatus == 0 ? "text-success" : "text-warning") %] override-link">
<a href="[% c.uri_for('/build' agg) %]">[% agg %]</a>
</span></div></th>
[% END %]
</tr>
</thead>
<tbody>
[% FOREACH j IN constituentJobs %]
<tr>
<th style="width: 1em;">[% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %]</th>
[% FOREACH agg IN aggs %]
<td>
[% r = aggregates.$agg.constituents.$j; IF r.id %]
<a href="[% c.uri_for('/build' r.id) %]">
[% INCLUDE renderBuildStatusIcon size=16 build=r %]
</a>
[% END %]
</td>
[% END %]
</tr>
[% END %]
</tbody>
</table>
</div>
2013-10-03 13:14:55 +00:00
[% END %]
[% INCLUDE makeLazyTab tabName="tabs-charts" uri=c.uri_for('/job' project.name jobset.name job 'metrics-tab') %]
<div id="tabs-links" class="tab-pane">
2013-02-22 10:55:06 +00:00
<ul>
<li><a href="[% c.uri_for('/job' project.name jobset.name job 'latest') %]">Latest successful build</a></li>
<li><a href="[% c.uri_for('/job' project.name jobset.name job 'latest-finished') %]">Latest successful build from a finished evaluation</a></li>
2013-02-22 10:55:06 +00:00
</ul>
</div>
</div>
[% END %]