[% WRAPPER layout.tt title="Build $id of job $project.name:$jobset.name:$job.name" %]
[% PROCESS common.tt %]
[% PROCESS "product-list.tt" %]
[% USE HTML %]
[% USE Date %]
[% isAggregate = constituents.size > 0 %]
[% BLOCK renderOutputs %]
[% start=1; FOREACH output IN outputs %]
[% IF !start %],
[% END; start=0; output.path %]
[% END %]
[% END %]
[% BLOCK renderBuildSteps %]
[% INCLUDE renderBuildStatusIcon size=128, build=build %]
|
Build ID: |
[% build.id %] |
Status: |
[% INCLUDE renderStatus build=build icon=0 %]
[% IF isAggregate;
nrConstituents = 0;
nrFinished = 0;
nrFailedConstituents = 0;
FOREACH b IN constituents;
nrConstituents = nrConstituents + 1;
IF b.finished; nrFinished = nrFinished + 1; END;
IF b.finished && b.buildstatus != 0; nrFailedConstituents = nrFailedConstituents + 1; END;
END;
%];
[%+ IF nrFinished == nrMembers && nrFailedConstituents == 0 %]
all [% nrConstituents %] constituent builds succeeded
[% ELSE %]
[% nrFailedConstituents %] out of [% nrConstituents %] constituent builds failed
[% IF nrFinished < nrConstituents %]
([% nrConstituents - nrFinished %] still pending)
[% END %]
[% END %]
[% END %]
|
System: |
[% build.system %] |
[% IF build.releasename %]
Release name: |
[% HTML.escape(build.releasename) %] |
[% ELSE %]
Nix name: |
[% build.nixname %] |
[% END %]
[% IF eval %]
Part of: |
evaluation [% eval.id %]
[% IF nrEvals > 1 +%] (and [% nrEvals - 1 %] others)[% END %]
|
[% END %]
[% IF build.iscachedbuild %]
Cached from: |
[% IF cachedBuild; INCLUDE renderFullBuildLink build=cachedBuild; ELSE %]unknown[% END %] |
[% END %]
[% IF !isAggregate && build.finished %]
Duration: |
[% actualBuild = build.iscachedbuild ? cachedBuild : build;
INCLUDE renderDuration duration = actualBuild.stoptime - actualBuild.starttime %];
finished at [% INCLUDE renderDateTime timestamp = actualBuild.stoptime %] |
[% END %]
[% IF !isAggregate && buildLogExists(build) %]
Logfile: |
pretty
raw
tail
|
[% END %]
|
[% IF build.buildproducts && !isAggregate %]
Build products
[% IF !available %]
Note: this build is no longer available.
[% END %]
[% INCLUDE renderProductList latestRoot=['/job' build.project.name build.jobset.name build.job.name 'latest'] %]
[% END %]
[% IF build.busy %]
Running build steps
[% INCLUDE renderBuildSteps type="Running" %]
[% END %]
[% IF build.finished %]
[% IF build.buildsteps && build.buildstatus != 0 && build.buildstatus != 6 %]
Failed build steps
[% INCLUDE renderBuildSteps type="Failed" %]
[% END %]
[% IF prevSuccessfulBuild %]
Changes
Last successful build [% INCLUDE renderDateTime timestamp = prevSuccessfulBuild.timestamp %] |
[% IF prevSuccessfulBuild && firstBrokenBuild && firstBrokenBuild.id != build.id %]
First broken build [% INCLUDE renderDateTime timestamp = firstBrokenBuild.timestamp %]
log diff
|
[% END %]
This build [% INCLUDE renderDateTime timestamp = build.timestamp %]
log diff
|
[% INCLUDE renderBuildStatusIcon build=prevSuccessfulBuild size=32 %] [% INCLUDE renderBuildLink build=prevSuccessfulBuild %] |
[% IF prevSuccessfulBuild && firstBrokenBuild && firstBrokenBuild.id != build.id %]
[% INCLUDE renderBuildStatusIcon build=firstBrokenBuild size=32 %] [% INCLUDE renderBuildLink build=firstBrokenBuild %] |
[% END %]
[% INCLUDE renderBuildStatusIcon build=build size=32 %] [% INCLUDE renderBuildLink build=build %] |
|
[% IF prevSuccessfulBuild && firstBrokenBuild && firstBrokenBuild.id != build.id %]
[% INCLUDE renderInputDiff inputs1=prevSuccessfulBuild.inputs inputs2=firstBrokenBuild.inputs %] |
[% END %]
[% INCLUDE renderInputDiff inputs1=prevSuccessfulBuild.inputs inputs2=build.inputs %] |
[% END %]
[% IF build.errormsg && build.buildstatus != 5 %]
Nix error output
[% HTML.escape(build.errormsg) %]
[% END %]
[% END %]
[% IF logtext %]
Log
[% HTML.escape(logtext) %]
[% END %]
[% IF isAggregate %]
This build is an aggregate of the following builds:
[% INCLUDE renderBuildList builds=constituents hideProjectName=1 hideJobsetName=1 %]
[% END %]
[% IF build.nixexprinput %]
Nix expression: |
file [% HTML.escape(build.nixexprpath) %] in input [% HTML.escape(build.nixexprinput) %] |
[% END %]
Nix name: |
[% build.nixname %] |
Short description: |
[% IF build.description %][% HTML.escape(build.description) %][% ELSE %]not given[% END %] |
Long description: |
[% IF build.longdescription %][% HTML.escape(build.longdescription) %][% ELSE %]not given[% END %] |
License: |
[% IF build.license %][% HTML.escape(build.license) %][% ELSE %]not given[% END %] |
Homepage: |
[% IF build.homepage %] build.homepage) %]>[% HTML.escape(build.homepage) %][% ELSE %]not given[% END %] |
Maintainer(s): |
[% IF build.maintainers %][% HTML.escape(build.maintainers) %][% ELSE %]not given[% END %] |
System: |
[% build.system %] |
Derivation store path: |
[% build.drvpath %] |
Output store paths: |
[% INCLUDE renderOutputs outputs=build.buildoutputs %] |
Queued: |
[% INCLUDE renderDateTime timestamp = build.timestamp %] |
[% IF build.finished && !build.iscachedbuild %]
Build started: |
[% INCLUDE renderDateTime timestamp = build.starttime %] |
Build finished: |
[% INCLUDE renderDateTime timestamp = build.stoptime %] |
[% END %]
[% IF !build.finished %]
Priority: |
[% build.priority %] |
[% END %]
[% IF build.finished && build.buildproducts %]
Availability: |
[% IF !available %]
Build output is no longer available
[% ELSIF build.keep %]
Build output will be kept permanently
[% ELSE %]
Build output is available, but may be garbage-collected
[% END %]
|
[% END %]
[% INCLUDE renderInputs inputs=build.inputs %]
[% IF prevBuild %]
Changes since previous [% INCLUDE renderBuildLink build=prevBuild %]
[% INCLUDE renderInputDiff inputs2=build.inputs inputs1=prevBuild.inputs %]
[% END %]
[% IF build.buildsteps %]
[% INCLUDE renderBuildSteps type="All" %]
[% END %]
[% IF build.dependents %]
The following builds have used this build as an input:
Build | Input name | System | Timestamp |
[% FOREACH input IN build.dependents %]
[% INCLUDE renderFullBuildLink build=input.build %] |
[% input.name %] |
[% input.build.system %] |
[% INCLUDE renderDateTime timestamp = input.build.timestamp %] |
[% END %]
[% END %]
[% INCLUDE makeLazyTab tabName="tabs-history" uri=c.uri_for('/build' build.id 'history-graphs') %]
[% IF drvAvailable %]
[% INCLUDE makeLazyTab tabName="tabs-build-deps" uri=c.uri_for('/build' build.id 'build-deps') %]
[% END %]
[% IF available %]
[% INCLUDE makeLazyTab tabName="tabs-runtime-deps" uri=c.uri_for('/build' build.id 'runtime-deps') %]
[% END %]
[% IF c.user_exists && available && project.releases %]