* In the last succeeded / job status queries, use the Builds.isCurrent
[?]
Oct 7, 2009, 3:45 PM
Z4KRJX4QVMQ5F233DC3XMSE5ZJYHKX3UF5QWAGHDC54EC5NUBXUQCDependencies
- [2]
CVDK3XJK* In the scheduler, don't check if we've already done a build (except - [3]
SZYY2EQQ* Make the queries more readable. - [4]
AKAZKCR6* At top-level and for each project, provide two channels: "latest" - [5]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [6]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [7]
RAKTHYAI* In the job status and error pages, show when the status of a job - [8]
3HZY24CX* Make jobsets viewable under - [9]
JSG5QEZJ* Only show status changes from successful to failed and failed to - [10]
UWVMQIAC* Refactoring. - [11]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [12]
RI4S7SYT* Job status: show the active jobs. - [13]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [14]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [15]
ZD5AEKWM* Job status / error pages: show only active jobs. - [16]
TCHEWSZL* The "latest" channel shouldn't contain inactive jobs. - [17]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [*]
UUGBVEGY* Development notes. - [*]
J5UVLXOK* Start of a basic Catalyst web interface. - [*]
N22GPKYT* Put info about logs / build products in the DB.
Change contents
- edit in doc/dev-notes.txt at line 93
# Add the isCurrent column to Builds and use the obsolete Jobs.active to fill it in. - edit in doc/dev-notes.txt at line 95
update builds set isCurrent = 1 where id in (select max(id) from builds natural join (select distinct b.project, b.jobset, b.job, b.system from builds b join (select project, jobset, name from jobs where active = 1) j on b.project = j.project and b.jobset = j.jobset and b.job = j.name) b2 group by project, jobset, job, system); - edit in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 8[4.1]→[4.1:2](∅→∅),[4.112]→[4.112:113](∅→∅),[4.113]→[4.0:74](∅→∅),[4.74]→[4.144:261](∅→∅),[4.144]→[4.144:261](∅→∅),[4.261]→[4.559:571](∅→∅),[4.571]→[4.75:77](∅→∅),[4.272]→[4.75:77](∅→∅)
sub filterInactiveJobs {my ($build) = @_;return $build->search({ active => 1 },{ join => 'job', '+select' => ["job.active"], '+as' => ["active"]});} - edit in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 14
$latest = filterInactiveJobs($latest)unless defined $c->stash->{showInactiveJobs}; - replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 79
getChannelData($c, scalar(filterInactiveJobs($c->stash->{latestSucceeded})));getChannelData($c, scalar($c->stash->{latestSucceeded})); - edit in src/lib/Hydra/Controller/Job.pm at line 18
$c->stash->{showInactiveJobs} = 1; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 31
$c->stash->{activeJobs} = [$c->stash->{jobset}->jobs->search({active => 1})];$c->stash->{activeJobs} = [$c->stash->{jobset}->builds->search({isCurrent => 1}, {select => ["job"], distinct => 1})]; - edit in src/lib/Hydra/Schema/Builds.pm at line 229
my $activeJobs = "(select distinct project, jobset, job, system from Builds where isCurrent = 1 $constraint)"; - replacement in src/lib/Hydra/Schema/Builds.pm at line 243
from Builds where finished = 1 $constraint group by project, jobset, job, system)from $activeJobs as activeJobsnatural join Buildswhere finished = 1group by project, jobset, job, system) - replacement in src/lib/Hydra/Schema/Builds.pm at line 259
from Builds natural join BuildResultInfowhere finished = 1 and buildStatus = 0 $constraintfrom $activeJobs as activeJobsnatural join Buildsnatural join BuildResultInfowhere finished = 1 and buildStatus = 0 - replacement in src/root/jobset.tt at line 121
[% FOREACH j IN activeJobs %] [% INCLUDE renderJobName project=project.name jobset=jobset.name job=j.name %] [% END %][% FOREACH j IN activeJobs %] [% INCLUDE renderJobName project=project.name jobset=jobset.name job=j.get_column('job') %] [% END %] - edit in src/sql/hydra.sql at line 413
create index IndexBuildsByIsCurrent on Builds(isCurrent);