[%
USE date;
USE String;
USE HTML;
inputTypes =
{ "svn" = "Subversion export"
, "svn-checkout" = "Subversion checkout"
, "bzr" = "Bazaar export"
, "bzr-checkout" = "Bazaar checkout"
, "git" = "Git checkout"
, "hg" = "Mercurial checkout"
, "string" = "String value"
, "boolean" = "Boolean"
, "path" = "Local path"
, "build" = "Build output"
, "sysbuild" = "Build output (same system)"
};
BLOCK renderDateTime;
date.format(timestamp, '%Y-%m-%d %H:%M:%S');
END;
BLOCK renderProjectName %]
[% project %]
[% END;
BLOCK renderJobsetName %]
[% jobset %]
[% END;
BLOCK renderJobName %]
[% job %]
[% END;
BLOCK renderFullJobsetName %]
[% INCLUDE renderProjectName %]:[% INCLUDE renderJobsetName %]
[% END;
BLOCK renderFullJobName %]
[% IF !hideProjectName; INCLUDE renderProjectName %]:[% END; IF !hideJobsetName; INCLUDE renderJobsetName %]:[% END; INCLUDE renderJobName %]
[% END;
BLOCK renderFullJobNameOfBuild;
INCLUDE renderFullJobName project=build.get_column("project") jobset = build.get_column("jobset") job = build.get_column("job");
END;
BLOCK renderDuration;
IF duration >= 24 * 60 * 60; duration div (24 * 60 * 60) %]d [% END;
IF duration >= 60 * 60; duration div (60 * 60) % 24 %]h [% END;
IF duration >= 60; duration div 60 % 60 %]m [% END;
duration % 60 %]s[%
END;
BLOCK renderBuildListHeader %]
[% IF !hideResultInfo %]
[% END %]
[% IF showSchedulingInfo %]
[% END %]
#
[% IF showSchedulingInfo %]
P
[% END %]
[% IF !hideJobName %]
Job
[% END %]
Release Name
System
Timestamp
[% IF showStatusChange %]
[% END %]
[% IF showDescription %]
Description
[% END %]
[% END;
BLOCK renderBuildListBody;
odd = 0;
FOREACH build IN builds; %]
[% IF !hideResultInfo %]
[% INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus %]
[% END %]
[% IF showSchedulingInfo %]
[% IF build.busy %]Started [% ELSE %]Queued [% END %]
[% END %]
[% build.id %]
[% IF showSchedulingInfo %]
[% build.priority %]
[% END %]
[% IF !hideJobName %]
[% INCLUDE renderFullJobNameOfBuild %]
[% END %]
[% !showSchedulingInfo and build.get_column('releasename') ? build.get_column('releasename') : build.nixname %]
[% build.system %]
[% date.format(build.timestamp, '%Y-%m-%d %H:%M:%S') %]
[% IF showStatusChange %]
[% IF build.get_column('statusChangeTime') %]
[% date.format(build.get_column('statusChangeTime'), '%Y-%m-%d %H:%M:%S') %]
[% ELSE %]
never
[% END %]
[% END %]
[% IF showDescription %]
[% build.description %]
[% END %]
[% END;
END;
BLOCK renderBuildListFooter %]
[% END;
BLOCK renderBuildList;
INCLUDE renderBuildListHeader;
INCLUDE renderBuildListBody;
INCLUDE renderBuildListFooter;
END;
BLOCK renderLink %][% title %] [% END;
BLOCK showBuildStats %]
Finished builds:
[% finishedBuilds %]
Succeeded builds:
[% succeededBuilds %]
Failed builds:
[% finishedBuilds - succeededBuilds %]
Total build time:
[% INCLUDE renderDuration duration = totalBuildTime %]
Scheduled builds:
[% scheduledBuilds %]
Currently executing builds:
[% busyBuilds %]
[% END;
BLOCK renderViewJobName;
IF job.description; HTML.escape(job.description); ELSE %][% job.job %] ([% job.attrs %])[% END;
END;
BLOCK maybeLink;
IF uri %] uri, class => class) %][% IF confirmmsg %]onclick="javascript:return confirm('[% confirmmsg %]')"[% END %]>[% content %] [% ELSE; content; END;
END;
BLOCK maybeButton;
IF uri %] uri); IF confirmmsg %]onclick="javascript:return confirm('[% confirmmsg %]')"[% END; content %] [% ELSE; content; END;
END;
BLOCK renderSelection;
IF edit;
IF radiobuttons; %]
[% FOREACH name IN options.keys.sort %]
param, name => param, value => name) %]
[% IF name == curValue; "checked='1'"; END %]>
[% options.$name %]
[% END %]
[% ELSE %]
param, name => param) %]>
[% FOREACH name IN options.keys.sort %]
name) %] [% IF name == curValue; "selected='selected'"; END %]>[% options.$name %]
[% END %]
[% END;
ELSE;
options.$curValue;
END;
END;
BLOCK maybeEditString;
IF edit %]
param, name => param, value => value) %] />
[% ELSE;
HTML.escape(value);
END;
END;
BLOCK editString;
IF edit %]
param, name => param, value => value) %] />
[% ELSE;
HTML.escape(value);
END;
END;
BLOCK renderFullBuildLink;
INCLUDE renderFullJobNameOfBuild build=build %] build [% build.id %] [%
END;
BLOCK renderBuildStatusIcon;
finished = build != undef ? build.finished : 1;
busy = busy != undef ? busy : build.busy;
buildstatus = buildstatus != undef ? buildstatus : build.buildstatus;
IF finished;
IF buildstatus == 0 %]
[% ELSIF buildstatus == 1 %]
[% ELSIF buildstatus == 2 %]
[% ELSIF buildstatus == 4 %]
[% ELSIF buildstatus == 5 %]
[% ELSIF buildstatus == 6 %]
[% ELSE %]
[% END;
ELSIF busy %]
[% ELSE %]
[% END;
END;
BLOCK renderStatus;
IF build.finished;
buildstatus = build.buildstatus;
IF icon; INCLUDE renderBuildStatusIcon size=16; END;
IF buildstatus == 0 %]
Success
[% ELSIF buildstatus == 1 %]
Build returned a non-zero exit code
[% ELSIF buildstatus == 2 %]
A dependency of the build failed
[% ELSIF buildstatus == 4 %]
Cancelled by user
[% ELSIF buildstatus == 5 %]
Build inhibited because a dependency previously failed to build
[% ELSIF buildstatus == 6 %]
Build failed (with result)
[% ELSE %]
Build failed
(see below )
[% END;
ELSIF build.busy %]
Build in progress
since [% INCLUDE renderDateTime timestamp = build.starttime;
ELSE %]
Scheduled to be built
[% END;
END;
BLOCK renderInputValue;
IF input.type == "build" || input.type == "sysbuild";
INCLUDE renderFullBuildLink build=input.dependency;
ELSIF input.type == "string" || input.type == "boolean" %]
"[% input.value %]"
[% ELSE %]
[% input.uri %][% IF input.revision %] (r[% input.revision %])[% END %]
[% END;
END;
BLOCK renderShortInputValue;
IF input.type == "build" || input.type == "sysbuild" %]
[% input.dependency.id %]
[% ELSIF input.type == "string" || input.type == "boolean" %]
"[% input.value %]"
[% ELSE %]
[% input.uri %][% IF input.revision %] (r[% input.revision %])[% END %]
[% END %]
[% END;
BLOCK renderDiffUri;
nouri = 1;
FOREACH m IN mappers;
base = m.baseuri;
url = bi1.uri;
path = url.replace(base, '');
IF url.match(base) %]
[% contents %]
[% nouri = 0;
END;
END;
IF nouri;
res = bi1.uri.split(' ');
url = res.0;
branch = res.1;
IF bi1.type == "hg" || bi1.type == "git" %]
[% contents %]
[% ELSE;
contents;
END;
END;
END;
BLOCK renderInputDiff; %]
[% IF !nestedDiff %]
Input Changes
[% END;
IF !nestLevel;
nestLevel = 0;
END;
IF nestLevel <= 3;
FOREACH bi1 IN build1.inputs;
deletedInput = 1;
FOREACH bi2 IN build2.inputs;
IF bi1.name == bi2.name;
IF bi1.type == bi2.type;
IF bi1.value != bi2.value || bi1.uri != bi2.uri %]
[% bi1.name %] [% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %]
[% ELSIF bi1.uri == bi2.uri && bi1.revision != bi2.revision %]
[% IF bi1.type == "git" %]
[% bi1.name %] [% INCLUDE renderDiffUri contents=(bi1.revision.substr(0, 6) _ ' to ' _ bi2.revision.substr(0, 6)) %]
[% ELSE %]
[% bi1.name %] [% INCLUDE renderDiffUri contents=(bi1.revision _ ' to ' _ bi2.revision) %]
[% END %]
[% ELSIF bi1.dependency.id != bi2.dependency.id || bi1.path != bi2.path %]
[% bi1.name %] [% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %]
[% INCLUDE renderInputDiff build1=bi1.dependency, build2=bi2.dependency, nestedDiff=1, nestLevel=nestLevel+1 %]
[% END %]
[% ELSE %]
[% bi1.name %] Changed input type from '[% type = bi1.type; inputTypes.$type %]' to '[% type = bi2.type; inputTypes.$type %]'
[% END;
deletedInput = 0;
END;
END;
IF deletedInput == 1 %]
[% bi1.name %] Input not present in this build.
[% END;
END;
END %]
[% END;
BLOCK renderPager %]
[% END;
BLOCK renderShortEvalInput;
IF input.type == "svn" || input.type == "svn-checkout" || input.type == "bzr" || input.type == "bzr-checkout" %]
r[% input.revision %]
[% ELSIF input.type == "git" %]
[% input.revision.substr(0, 7) %]
[% ELSIF input.type == "build" || input.type == "sysbuild" %]
[% input.dependency.id %]
[% ELSE %]
[% input.revision %]
[% END;
END;
BLOCK renderEvals %]
#
Date
Input changes
Success
[% FOREACH e IN evals;
eval = e.eval;
link = c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id]) %]
[% eval.id %]
[% INCLUDE renderDateTime timestamp = eval.timestamp %]
[% IF e.changedInputs.size > 0;
sep='';
FOREACH input IN e.changedInputs;
sep; %] [% input.name %] → [% INCLUDE renderShortEvalInput input=input;
sep=',';
END;
ELSE %]
-
[% END %]
[% e.nrSucceeded %]
[% e.nrFailed %]
[% IF e.nrScheduled > 0 %]
[% e.nrScheduled %]
[% END %]
[% IF e.diff > 0 %]
+[% e.diff %]
[% ELSIF e.diff < 0 && e.nrScheduled == 0 %]
[% e.diff %]
[% END %]
[% END;
IF linkToAll %]
More...
[% END %]
[% END;
BLOCK renderLogLinks %]
(log , raw , tail )
[% END %]