[% WRAPPER layout.tt
title="Job $project.name:$jobset.name:$job.name"
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(job) %]
[% IF lastBuilds.size != 0 %]
Latest builds
[% INCLUDE renderBuildList builds=lastBuilds
linkToAll=c.uri_for('/job' project.name jobset.name job.name 'all') %]
[% END %]
[% IF queuedBuilds.size != 0 %]
Queued builds
[% INCLUDE renderBuildList builds=queuedBuilds showSchedulingInfo=1 hideResultInfo=1 %]
[% END %]
[% IF constituentJobs.size > 0 %]
This is an aggregate job:
its success or failure is determined entirely by the result of
building its constituent jobs. The table below shows
the status of each constituent job for the [%
aggregates.keys.size %] most recent builds of the
aggregate.
[% aggs = aggregates.keys.nsort.reverse %]
[% END %]
Build time (in seconds)
[% INCLUDE createChart id="build-times" yaxis="sec" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'build-times') %]
Closure size (in MiB)
[% INCLUDE createChart id="closure-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'closure-sizes') %]
Output size (in MiB)
[% INCLUDE createChart id="output-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'output-sizes') %]
[% FOREACH metric IN metrics %]
Metric: [%HTML.escape(metric.name)%]
[% id = "metric-" _ metric.name;
id = id.replace('\.', '_');
INCLUDE createChart dataUrl=c.uri_for('/job' project.name jobset.name job.name 'metric' metric.name); %]
[% END %]
[% END %]