* hydra: 'new' UI for project/jobset/job/build

This commit is contained in:
Rob Vermaas
2010-02-05 14:48:22 +00:00
parent 3677a5fc6e
commit 9dba2127cb
37 changed files with 952 additions and 663 deletions

View File

@ -38,6 +38,37 @@ sub index : Chained('jobset') PathPart('') Args(0) {
{},
{select => ["job"], order_by => ["job"], group_by => ["job"], having => { 'sum(isCurrent)' => 0 }}
)];
$c->stash->{systems} = [$c->stash->{jobset}->builds->search({iscurrent => 1}, {select => ["system"], distinct => 1})];
# status per system
my @systems = ();
foreach my $system (@{$c->stash->{systems}}) {
push(@systems, $system->system);
}
if(scalar(@{$c->stash->{activeJobs}}) <= 20) {
my @select = ();
my @as = ();
push(@select, "job"); push(@as, "job");
foreach my $system (@systems) {
push(@select, "(SELECT buildstatus FROM BuildResultInfo bri NATURAL JOIN Builds b WHERE b.id = (SELECT MAX(id) FROM Builds t WHERE t.project = me.project AND t.jobset = me.jobset AND t.job = me.job AND t.system = '$system'))");
push(@as, $system);
push(@select, "(SELECT b.id FROM BuildResultInfo bri NATURAL JOIN Builds b WHERE b.id = (SELECT MAX(id) FROM Builds t WHERE t.project = me.project AND t.jobset = me.jobset AND t.job = me.job AND t.system = '$system'))");
push(@as, $system."-build");
}
$c->stash->{activeJobsStatus} = [$c->model('DB')->resultset('ActiveJobsForJobset')
->search( {}
, { bind => [$c->stash->{project}->name, $c->stash->{jobset}->name]
, select => \@select
, as => \@as
, order_by => ["job"]
})];
}
# last builds for jobset
my $tmp = $c->stash->{jobset}->builds;
$c->stash->{lastBuilds} = [joinWithResultInfo($c, $tmp)
->search({finished => 1}, {order_by => "timestamp DESC", rows => 5 })] ;
}

View File

@ -191,6 +191,14 @@ __PACKAGE__->has_many(
use Hydra::Helper::Nix;
# order buildsteps
__PACKAGE__->has_many(
"buildsteps",
"Hydra::Schema::BuildSteps",
{ "foreign.build" => "self.id" },
{ order_by => "stepnr" },
);
__PACKAGE__->has_many(
"dependents",
"Hydra::Schema::BuildInputs",
@ -273,6 +281,8 @@ QUERY
$joinWithStatusChange
QUERY
);
makeSource("ActiveJobs$name", "(select distinct project, jobset, job from Builds where isCurrent = 1 $constraint)");
makeSource(
"LatestSucceeded$name",

View File

@ -97,6 +97,12 @@ __PACKAGE__->has_many(
# Created by DBIx::Class::Schema::Loader v0.04999_09 @ 2009-11-17 16:05:10
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+HDJ8tIPcvj5+IwgHqTnaw
__PACKAGE__->has_many(
"jobsets",
"Hydra::Schema::Jobsets",
{ "foreign.project" => "self.name" },
{ order_by => "name" },
);
# You can replace this text with custom content, and it will be preserved on regeneration
1;