forked from lix-project/hydra
* Separate job status and all builds pages.
This commit is contained in:
parent
38a1b0d7ef
commit
266aa141bd
|
@ -72,17 +72,6 @@ sub index :Path :Args(0) {
|
||||||
$c->stash->{template} = 'index.tt';
|
$c->stash->{template} = 'index.tt';
|
||||||
|
|
||||||
getBuildStats($c, $c->model('DB::Builds'));
|
getBuildStats($c, $c->model('DB::Builds'));
|
||||||
|
|
||||||
$c->stash->{allBuilds} = [$c->model('DB::Builds')->search(
|
|
||||||
{finished => 1}, {order_by => "timestamp DESC"})];
|
|
||||||
|
|
||||||
# Get the latest finished build for each unique job.
|
|
||||||
$c->stash->{latestBuilds} = [$c->model('DB::Builds')->search(undef,
|
|
||||||
{ join => 'resultInfo'
|
|
||||||
, where => "finished != 0 and timestamp = (select max(timestamp) from Builds " .
|
|
||||||
"where project == me.project and attrName == me.attrName and finished != 0 and system == me.system)"
|
|
||||||
, order_by => "project, attrname, system"
|
|
||||||
})];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,6 +118,39 @@ sub queue :Local {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub jobstatus :Local {
|
||||||
|
my ($self, $c) = @_;
|
||||||
|
$c->stash->{template} = 'jobstatus.tt';
|
||||||
|
|
||||||
|
# Get the latest finished build for each unique job.
|
||||||
|
$c->stash->{latestBuilds} = [$c->model('DB::Builds')->search(undef,
|
||||||
|
{ join => 'resultInfo'
|
||||||
|
, where => "finished != 0 and timestamp = (select max(timestamp) from Builds " .
|
||||||
|
"where project == me.project and attrName == me.attrName and finished != 0 and system == me.system)"
|
||||||
|
, order_by => "project, attrname, system"
|
||||||
|
})];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub all :Local {
|
||||||
|
my ($self, $c, $page) = @_;
|
||||||
|
$c->stash->{template} = 'all.tt';
|
||||||
|
|
||||||
|
$page = int($page) || 1;
|
||||||
|
|
||||||
|
my $resultsPerPage = 50;
|
||||||
|
|
||||||
|
my $nrBuilds = scalar($c->model('DB::Builds')->search({finished => 1}));
|
||||||
|
|
||||||
|
$c->stash->{page} = $page;
|
||||||
|
$c->stash->{resultsPerPage} = $resultsPerPage;
|
||||||
|
$c->stash->{totalBuilds} = $nrBuilds;
|
||||||
|
|
||||||
|
$c->stash->{builds} = [$c->model('DB::Builds')->search(
|
||||||
|
{finished => 1}, {order_by => "timestamp DESC", rows => $resultsPerPage, page => $page})];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sub updateProject {
|
sub updateProject {
|
||||||
my ($c, $project) = @_;
|
my ($c, $project) = @_;
|
||||||
|
|
||||||
|
|
20
src/Hydra/root/all.tt
Normal file
20
src/Hydra/root/all.tt
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[% WRAPPER layout.tt title="All Builds" %]
|
||||||
|
[% PROCESS common.tt %]
|
||||||
|
|
||||||
|
<h1>All Builds</h1>
|
||||||
|
|
||||||
|
<p>Showing builds [% (page - 1) * resultsPerPage + 1 %] - [% (page - 1) * resultsPerPage + builds.size %]
|
||||||
|
out of [% totalBuilds %] in order of descending timestamp.</p>
|
||||||
|
|
||||||
|
[% PROCESS renderBuildList %]
|
||||||
|
|
||||||
|
[<a href="[% c.uri_for('/all' 1) %]">First</a>]
|
||||||
|
[% IF page > 1 %]
|
||||||
|
[<a href="[% c.uri_for('/all' (page - 1)) %]">Prev</a>]
|
||||||
|
[% END %]
|
||||||
|
[% IF page * resultsPerPage < totalBuilds %]
|
||||||
|
[<a href="[% c.uri_for('/all' (page + 1)) %]">Next</a>]
|
||||||
|
[% END %]
|
||||||
|
[<a href="[% c.uri_for('/all' (totalBuilds - 1) div resultsPerPage + 1) %]">Last</a>]
|
||||||
|
|
||||||
|
[% END %]
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Overview" %]
|
[% WRAPPER layout.tt title="Build Information" %]
|
||||||
[% PROCESS common.tt %]
|
[% PROCESS common.tt %]
|
||||||
[% USE HTML %]
|
[% USE HTML %]
|
||||||
[% USE mibs=format("%.2f") %]
|
[% USE mibs=format("%.2f") %]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Overview" %]
|
[% WRAPPER layout.tt title="Error" %]
|
||||||
[% USE HTML %]
|
[% USE HTML %]
|
||||||
|
|
||||||
<h1>Error</h1>
|
<h1>Error</h1>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Overview" %]
|
[% WRAPPER layout.tt title="Overview" %]
|
||||||
[% PROCESS common.tt %]
|
[% PROCESS common.tt %]
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,18 +10,4 @@
|
||||||
[% PROCESS showBuildStats %]
|
[% PROCESS showBuildStats %]
|
||||||
|
|
||||||
|
|
||||||
<h2>Job status</h2>
|
|
||||||
|
|
||||||
<p>Below are the latest builds for each job.</p>
|
|
||||||
|
|
||||||
[% PROCESS renderBuildList builds=latestBuilds %]
|
|
||||||
|
|
||||||
|
|
||||||
<h2>All builds</h2>
|
|
||||||
|
|
||||||
<p>Number of builds: [% allBuilds.size %]</p>
|
|
||||||
|
|
||||||
[% PROCESS renderBuildList builds=allBuilds %]
|
|
||||||
|
|
||||||
|
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Overview" %]
|
[% WRAPPER layout.tt title="Job ‘$curProject.name:$jobName’" %]
|
||||||
[% PROCESS common.tt %]
|
[% PROCESS common.tt %]
|
||||||
|
|
||||||
<h1>All builds for job <tt>[% curProject.name %]:[% jobName %]</tt></h1>
|
<h1>All builds for job <tt>[% curProject.name %]:[% jobName %]</tt></h1>
|
||||||
|
|
10
src/Hydra/root/jobstatus.tt
Normal file
10
src/Hydra/root/jobstatus.tt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[% WRAPPER layout.tt title="Job Status" %]
|
||||||
|
[% PROCESS common.tt %]
|
||||||
|
|
||||||
|
<h1>Job Status</h1>
|
||||||
|
|
||||||
|
<p>Below are the latest builds for each job.</p>
|
||||||
|
|
||||||
|
[% PROCESS renderBuildList builds=latestBuilds %]
|
||||||
|
|
||||||
|
[% END %]
|
|
@ -13,7 +13,7 @@
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>[% title %]</title>
|
<title>Hydra - [% title %]</title>
|
||||||
<link rel="stylesheet" href="/static/css/hydra.css" type="text/css" />
|
<link rel="stylesheet" href="/static/css/hydra.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="/static/css/logfile.css" type="text/css" />
|
<link rel="stylesheet" href="/static/css/logfile.css" type="text/css" />
|
||||||
<script type="text/javascript" src="/static/js/jquery-pack.js"></script>
|
<script type="text/javascript" src="/static/js/jquery-pack.js"></script>
|
||||||
|
@ -82,6 +82,7 @@
|
||||||
<ul class="submenu">
|
<ul class="submenu">
|
||||||
[% INCLUDE makeLink uri = c.uri_for('/') title = "Overview" %]
|
[% INCLUDE makeLink uri = c.uri_for('/') title = "Overview" %]
|
||||||
[% INCLUDE makeLink uri = c.uri_for('/queue') title = "Queue" %]
|
[% INCLUDE makeLink uri = c.uri_for('/queue') title = "Queue" %]
|
||||||
|
[% INCLUDE makeLink uri = c.uri_for('/jobstatus') title = "Job status" %]
|
||||||
[% INCLUDE makeLink uri = c.uri_for('/latest') title = "Latest builds" %]
|
[% INCLUDE makeLink uri = c.uri_for('/latest') title = "Latest builds" %]
|
||||||
[% INCLUDE makeLink uri = c.uri_for('/all') title = "All builds" %]
|
[% INCLUDE makeLink uri = c.uri_for('/all') title = "All builds" %]
|
||||||
[% INCLUDE makeLink uri = c.uri_for('/search') title = "Search builds" %]
|
[% INCLUDE makeLink uri = c.uri_for('/search') title = "Search builds" %]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Overview" %]
|
[% WRAPPER layout.tt title="Logfile" %]
|
||||||
|
|
||||||
<h1>Logfile for <tt>[% build.project.name %]:[% build.attrname %]</tt> build [% build.id %][%IF step %], step [% step.stepnr %] (<tt>[% step.outpath %]</tt>)[% END %]</h1>
|
<h1>Logfile for <tt>[% build.project.name %]:[% build.attrname %]</tt> build [% build.id %][%IF step %], step [% step.stepnr %] (<tt>[% step.outpath %]</tt>)[% END %]</h1>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Overview" %]
|
[% WRAPPER layout.tt title=(edit ? (create ? "New Project" : "Editing Project ‘$curProject.name’") : "Project ‘$curProject.name’") %]
|
||||||
[% PROCESS common.tt %]
|
[% PROCESS common.tt %]
|
||||||
[% USE HTML %]
|
[% USE HTML %]
|
||||||
|
|
||||||
|
@ -176,6 +176,15 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
[% IF !edit %]
|
||||||
|
|
||||||
|
<h2>Statistics</h2>
|
||||||
|
|
||||||
|
[% PROCESS showBuildStats %]
|
||||||
|
|
||||||
|
[% END %]
|
||||||
|
|
||||||
|
|
||||||
<h2>Jobsets</h2>
|
<h2>Jobsets</h2>
|
||||||
|
|
||||||
[% IF curProject.jobsets && curProject.jobsets.size > 0 || edit %]
|
[% IF curProject.jobsets && curProject.jobsets.size > 0 || edit %]
|
||||||
|
@ -240,34 +249,6 @@
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
|
|
||||||
[% IF !edit %]
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Jobs</h2>
|
|
||||||
|
|
||||||
[% IF jobNames && jobNames.size > 0 %]
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
[% FOREACH jobName IN jobNames -%]
|
|
||||||
<li><a href="[% c.uri_for('/job' curProject.name jobName.attrname) %]"><tt>[% jobName.attrname %]</tt></a></li>
|
|
||||||
[% END %]
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
[% ELSE %]
|
|
||||||
|
|
||||||
<p>No builds have been performed or scheduled.</p>
|
|
||||||
|
|
||||||
[% END %]
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Statistics</h2>
|
|
||||||
|
|
||||||
[% PROCESS showBuildStats %]
|
|
||||||
|
|
||||||
|
|
||||||
[% END %]
|
|
||||||
|
|
||||||
|
|
||||||
[% IF edit %]
|
[% IF edit %]
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[% WRAPPER layout.tt title="Hydra Queue" %]
|
[% WRAPPER layout.tt title="Queue" %]
|
||||||
[% PROCESS common.tt %]
|
[% PROCESS common.tt %]
|
||||||
|
|
||||||
<h1>Hydra Queue</h1>
|
<h1>Hydra Queue</h1>
|
||||||
|
|
Loading…
Reference in a new issue