[%- 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 -%] [%- END -%] [%- IF !hideJobName -%] [%- END -%] [%- IF showStatusChange -%] [%- END -%] [%- IF showDescription -%] [%- END -%] [%- END -%] [%- BLOCK renderBuildListBody -%] [%- odd = 0 -%] [%- FOREACH build IN builds -%] [%- IF !hideResultInfo -%] [%- END -%] [% IF showSchedulingInfo %] [% END %] [%- IF showSchedulingInfo -%] [%- END -%] [%- IF !hideJobName -%] [%- END -%] [%- IF showStatusChange -%] [%- END -%] [%- IF showDescription -%] [%- END -%] [%- END -%] [%- END -%] [%- BLOCK renderBuildListFooter -%]
#PJobRelease Name System TimestampLast status changeDescription
[%- INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus -%] [%- IF build.busy %]Started[% ELSE %]Queued[% END %][% build.id %][% build.priority %][%- INCLUDE renderFullJobNameOfBuild -%][% !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 build.get_column('statusChangeTime') -%] [% date.format(build.get_column('statusChangeTime'), '%Y-%m-%d %H:%M:%S') %] [%- ELSE -%] never [%- END -%] [% build.description %]
[%- END -%] [%- BLOCK renderBuildList -%] [%- INCLUDE renderBuildListHeader -%] [%- INCLUDE renderBuildListBody -%] [%- INCLUDE renderBuildListFooter -%] [%- END -%] [%- BLOCK renderLink -%][% title %][%- END -%] [%- BLOCK showBuildStats -%]
Finished builds: [% finishedBuilds %]
Succeeded Succeeded builds: [% succeededBuilds %]
Failed 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 %] [% END %]
[% ELSE %] [% END %] [% ELSE %] [% options.$curValue %] [% END %] [% END %] [% BLOCK maybeEditString; 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 -%] Succeeded [%- ELSIF buildstatus == 1 -%] Failed [%- ELSIF buildstatus == 2 -%] Dependency failed [%- ELSIF buildstatus == 4 -%] Cancelled [%- ELSIF buildstatus == 5 -%] Failed [%- ELSIF buildstatus == 6 -%] Failed (with result) [%- ELSE -%] Failed [%- END -%] [%- ELSIF busy -%] Busy [%- ELSE -%] Scheduled [%- 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 %] [% 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 %] [% ELSIF bi1.uri == bi2.uri && bi1.revision != bi2.revision %] [% IF bi1.type == "git" %] [% ELSE %] [% END %] [% ELSIF bi1.dependency.id != bi2.dependency.id || bi1.path != bi2.path %] [% END %] [% ELSE %] [% END %] [% deletedInput = 0 %] [% END %] [% END %] [% IF deletedInput == 1 %] [% END %] [% END %] [% END %]
InputChanges
[% bi1.name %][% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %]
[% bi1.name %][% INCLUDE renderDiffUri contents=(bi1.revision.substr(0, 6) _ ' to ' _ bi2.revision.substr(0, 6)) %]
[% bi1.name %][% INCLUDE renderDiffUri contents=(bi1.revision _ ' to ' _ bi2.revision) %]
[% bi1.name %][% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %]

[% INCLUDE renderInputDiff build1=bi1.dependency, build2=bi2.dependency, nestedDiff=1, nestLevel=nestLevel+1 %]
[% bi1.name %]Changed input type from '[% type = bi1.type; inputTypes.$type %]' to '[% type = bi2.type; inputTypes.$type %]'
[% bi1.name %]Input not present in this build.
[% END %] [% BLOCK hydraStatus %] [% FOREACH step IN steps %] [% END %]
MachineJobTypeBuildStepWhatSince
[% IF step.machine; step.machine.match('@(.*)').0; ELSE; 'localhost'; END %] [% INCLUDE renderFullJobName project = step.build.project.name jobset = step.build.jobset.name job = step.build.job.name %] [% step.system %] [% step.build.id %] [% step.stepnr %] [% step.drvpath.match('-(.*)').0 %] [% INCLUDE renderDuration duration = curTime - step.starttime %]
[% 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 %] [%- FOREACH e IN evals; eval = e.eval; link = c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id]) -%] [%- END -%] [%- IF linkToAll -%] [%- END -%]
# Date Input changes Success
[% 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 -%]
More...
[% END %]