* Add the name of the jobset to ReleaseSetJobs, otherwise we can't
[?]
Mar 12, 2009, 2:18 PM
3E6IP3R3JGH76PNGG7RCADV65KOV24HQXPXNLVVYIQ46AVYJRG3ACDependencies
- [2]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [3]
7ZHHVD6Q* Inputs of type "build" must now be declared explicitly. - [4]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [5]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [6]
VCOSLZRP - [7]
IK53RV4V - [8]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [9]
CLJQCY2X* Store info about all the build actions and allow them to be - [10]
R5D7DZPE - [11]
J5UVLXOK* Start of a basic Catalyst web interface. - [12]
WHAFVCEI - [13]
D3DIBMOK* For products that are directories (like manuals), allow a default - [14]
ZEHSSVFG - [15]
FDE3BJAP* Refactoring. - [16]
DQD7JMSU* Fix the terminology. - [17]
YAPITGB3* Boolean inputs. - [18]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [19]
B72GLND4 - [20]
37R34XJO* Negative caching: don't perform a build if a dependency already - [21]
XNCWZ7OT* Get the job priority from the meta.schedulingPriority attribute. - [22]
S66BOMVU* Added authentication. - [23]
L2E6EVE2* Merged the Build and Job tables. - [24]
KOTB7BKV - [25]
POPU2ATH* hydra_scheduler: use eval-jobs. - [26]
ABEOQU7T - [27]
7LKUAIGC - [28]
DVNWJXWW* Generic declaration of build products. - [29]
LQNBKF3D - [30]
4X6NS66Q* Keep the most recent builds for each job. - [31]
JLDUSNUO* Unify rendering of finished and scheduled builds. - [32]
AFTXA575* $HYDRA_DATA environment variable. - [33]
7UJ5YV4V* Provide a channel for each project containing all the latest - [34]
2T42QGZD* Register builds as GC roots so they don't get deleted. - [35]
K3EAQY3X* Doh. - [36]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [37]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [38]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [39]
X27GNHDV* Basic job info in the database. - [40]
7YBYT2LQ - [41]
CMU3YKOU* Store the release name. - [42]
NREF6YOA* Don't start more builds concurrently than allowed for each system - [43]
FEMR2C5W - [44]
AS5PAYLI - [45]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [46]
LBNVQXUB* Build the /build stuff in a separate controller. - [47]
H7CNGK4O* Log evaluation errors etc. in the DB. - [48]
NLJJZVHO* Use ->update({...}) properly. - [49]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [50]
SHBLLAVH* More global substitution. - [51]
ZILILXXK* Allow scheduled builds to be cancelled. They're not removed from - [52]
N22GPKYT* Put info about logs / build products in the DB. - [53]
WYN733ST* Store build duration, handle cached builds. - [54]
TQKGQ5R3 - [55]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [56]
K2NXFFKH - [57]
67P45PY4 - [58]
UMBR3VG3 - [59]
M552HLIA* Support variant builds. - [60]
K5BEBWKM - [61]
3ZCEPLNO - [62]
PHX2HIVG* Store info about the build inputs in the build record. - [63]
YTZOC7C5* Editing of jobset inputs. - [64]
ZVTSOVHN* Support Subversion checkouts. - [65]
BVOPAMLS - [66]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [67]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [68]
YTSIRIMK* Separate job status and all builds pages. - [69]
6JGCGK5X - [70]
GWCV3TQV* BuildInputs table: link to dependencies, include store paths. - [71]
TLZ2SPBR - [72]
IN272KZW* Automatically keep all builds in the latest successful release in - [*]
2GK5DOU7* Downloading closures. - [*]
TULPZ62Y* Perform builds in parallel. - [*]
WZ3AEJ67* hydra_update_gc_roots.pl registers build outputs that should be kept
Change contents
- replacement in src/lib/Hydra/Controller/Job.pm at line 29
$c->stash->{curProject}->builds->search({attrName => $c->stash->{jobName}});$c->stash->{curProject}->builds->search({job => $c->stash->{jobName}}); - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 52
foreach my $job ($builds->search({},{group_by => ['project', 'attrname', 'system']}))foreach my $build ($builds->search({},{group_by => ['project', 'job', 'system']})) - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 56
{ project => $job->get_column('project'), attrname => $job->attrname, system => $job->system{ project => $build->get_column('project'), job => $build->job, system => $build->system - replacement in src/lib/Hydra/Helper/Nix.pm at line 127
{ attrname => $primaryJob->job, finished => 1 },{ job => $primaryJob->job, finished => 1 }, - replacement in src/lib/Hydra/Helper/Nix.pm at line 157
{ attrname => $job->job, finished => 1 },{ job => $job->job, finished => 1 }, - replacement in src/lib/Hydra/Schema/BuildInputs.pm at line 39
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:11XN47b5bRrRKiWtzLO+Pw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CLL7aeJ0fe0NX3LCnNs4/A - replacement in src/lib/Hydra/Schema/BuildProducts.pm at line 38
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:gUnxXuaqq40KFRIUSBmVuA# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9Eer/gLCKlOKfnwC+kfFaw - replacement in src/lib/Hydra/Schema/BuildResultInfo.pm at line 38
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xvSDu+FkyKp5wTAEGmiKOw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ieF3JOI4N3XZUyMboZhrjg - replacement in src/lib/Hydra/Schema/BuildResultInfo.pm at line 44
{ id => "faileddepbuild", stepnr => "faileddepstepnr" },{ build => "faileddepbuild", stepnr => "faileddepstepnr" }, - replacement in src/lib/Hydra/Schema/BuildSchedulingInfo.pm at line 30
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xv5P0Erv5oEy4r3c9RuV0w# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oomDjaTJHIQjraUqhzFPsg - replacement in src/lib/Hydra/Schema/BuildSteps.pm at line 11
"id","build", - replacement in src/lib/Hydra/Schema/BuildSteps.pm at line 34
__PACKAGE__->set_primary_key("id", "stepnr");__PACKAGE__->belongs_to("id", "Hydra::Schema::Builds", { id => "id" });__PACKAGE__->set_primary_key("build", "stepnr");__PACKAGE__->belongs_to("build", "Hydra::Schema::Builds", { id => "build" }); - replacement in src/lib/Hydra/Schema/BuildSteps.pm at line 38
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Ne+uSrfxnk+wK60IrVoTww# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+nb1zsYcv9WziZ6IHcc/yw - replacement in src/lib/Hydra/Schema/Builds.pm at line 21
"attrname","job", - replacement in src/lib/Hydra/Schema/Builds.pm at line 60[5.849]→[5.2973:3006](∅→∅),[5.1316]→[5.2973:3006](∅→∅),[5.1651]→[5.2973:3006](∅→∅),[5.2973]→[5.2973:3006](∅→∅)
{ "foreign.id" => "self.id" },{ "foreign.build" => "self.id" }, - replacement in src/lib/Hydra/Schema/Builds.pm at line 79
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iwt05CKHqfd33lW+wAC2mw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UahvxjBmn7b70IK+QcnKHA - replacement in src/lib/Hydra/Schema/CachedPathInputs.pm at line 25
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Hjklk18AGqKd7dDPUlqS9A# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+AZEuCFAfkl7SKwlxDBnaw - replacement in src/lib/Hydra/Schema/CachedSubversionInputs.pm at line 23
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OMt7YCEd4Vc3edHp2fxcrw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:2JtWOkH5OVGl7Cb7STLM5Q - replacement in src/lib/Hydra/Schema/JobsetInputAlts.pm at line 34
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:gQOuvSuoR2kczD57yaVSwQ# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ka/dxG48LaZOQeShZFs0Hw - replacement in src/lib/Hydra/Schema/JobsetInputs.pm at line 46
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:GpIp3ENzylBZ9HQUNhO17Q# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:earsp0XPWppy5/VOJkQ/PA - replacement in src/lib/Hydra/Schema/Jobsets.pm at line 53
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BcAloJiRDPMvL/+GqsPiTw# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ADLNgkS2YPv4DuszwHau7g - replacement in src/lib/Hydra/Schema/Projects.pm at line 48
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TTHljyVTOMxXzNATXkltNg# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:R/GeZxDujiuKze++Mc2ZTw - edit in src/lib/Hydra/Schema/ReleaseSetJobs.pm at line 24
{ data_type => "text", is_nullable => 0, size => undef },"jobset", - replacement in src/lib/Hydra/Schema/ReleaseSetJobs.pm at line 37
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YC+cgQcuvO4TxC5UpU7u4A# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OM2joIa3Bj6t9BhVrOjN8Q - replacement in src/lib/Hydra/Schema/ReleaseSets.pm at line 32
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Sv+5cdtqHDjWM0Zmmu0PSg# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:gSzri22yKGHLKCjNLv9/VQ - replacement in src/lib/Hydra/Schema/SystemTypes.pm at line 19
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RLOKTpEzFYJMyzgMCg7zSg# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:viZlvDAHk9k8ScuA/qfUGw - replacement in src/lib/Hydra/Schema/UserRoles.pm at line 20
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:QTXCy6SeSRYYXW3odCVLiQ# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:gRuZJKELtc15+vQFjxjkKQ - replacement in src/lib/Hydra/Schema/Users.pm at line 33
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eQFOcWRNwb7IE1ifGrw4rQ# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Lomf54EURbBIbrWGojiFIw - replacement in src/lib/Hydra/Schema.pm at line 11
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:17:32# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:bK7m5SJjCnJKOckiufcb9w# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 14:55:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oeLeU2T8C2dVBS+ugF0p8g - replacement in src/root/build.tt at line 7
Job <tt>[% build.project.name %]:[% build.attrname %]</tt> build [% id %]Job <tt>[% build.project.name %]:[% build.job %]</tt> build [% id %] - replacement in src/root/build.tt at line 50
(namely, <a href="[% c.uri_for('/build' failedDep.id.id 'nixlog' failedDep.stepnr) %]"><tt>[% failedDep.outpath %]</tt></a>)(namely, <a href="[% c.uri_for('/build' failedDep.build.id 'nixlog' failedDep.stepnr) %]"><tt>[% failedDep.outpath %]</tt></a>) - replacement in src/root/build.tt at line 84
<td><a href="[% c.uri_for('/project' build.project.name 'job' build.attrname) %]"><tt>[% build.attrname %]</tt></a></td><td><a href="[% c.uri_for('/project' build.project.name 'job' build.job) %]"><tt>[% build.job %]</tt></a></td> - replacement in src/root/build.tt at line 190
<a href="[% c.uri_for('/build' input.dependency.id) %]">Job <tt>[% input.dependency.project.name %]:[% input.dependency.attrname %]</tt> build [% input.dependency.id %]</a><a href="[% c.uri_for('/build' input.dependency.id) %]">Job <tt>[% input.dependency.project.name %]:[% input.dependency.job %]</tt> build [% input.dependency.id %]</a> - replacement in src/root/build.tt at line 301
<td><a href="[% c.uri_for('/build' input.build.id) %]">Job <tt>[% input.build.project.name %]:[% input.build.attrname %]</tt> build [% input.build.id %]</a></td><td><a href="[% c.uri_for('/build' input.build.id) %]">Job <tt>[% input.build.project.name %]:[% input.build.job %]</tt> build [% input.build.id %]</a></td> - replacement in src/root/common.tt at line 64
<td><a href="[% c.uri_for('/project' build.get_column("project") 'job' build.attrname) %]"><tt>[% build.attrname %]</tt></a></td><td><a href="[% c.uri_for('/project' build.get_column("project") 'job' build.job) %]"><tt>[% build.job %]</tt></a></td> - replacement in src/root/log.tt at line 3
<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.job %]</tt> build [% build.id %][%IF step %], step [% step.stepnr %] (<tt>[% step.outpath %]</tt>)[% END %]</h1> - replacement in src/script/hydra_build.pl at line 61
$failedDepBuild = $step->id->id;$failedDepBuild = $step->build->id; - replacement in src/script/hydra_build.pl at line 94
$db->resultset('BuildSteps')->create({ id => $build->id, stepnr => $buildStepNr++$build->buildsteps->create({ stepnr => $buildStepNr++ - replacement in src/script/hydra_build.pl at line 109
(my $step) = $db->resultset('BuildSteps')->search({id => $build->id, type => 0, drvpath => $drvPath}, {});(my $step) = $build->buildsteps->search({type => 0, drvpath => $drvPath}, {}); - replacement in src/script/hydra_build.pl at line 121
(my $step) = $db->resultset('BuildSteps')->search({id => $build->id, type => 0, drvpath => $drvPathStep}, {});(my $step) = $build->buildsteps->search({type => 0, drvpath => $drvPathStep}, {}); - replacement in src/script/hydra_build.pl at line 126
$db->resultset('BuildSteps')->create({ id => $build->id, stepnr => $buildStepNr++$build->buildsteps->create({ stepnr => $buildStepNr++ - replacement in src/script/hydra_build.pl at line 145
$db->resultset('BuildSteps')->create({ id => $build->id, stepnr => $buildStepNr++$build->buildsteps->create({ stepnr => $buildStepNr++ - replacement in src/script/hydra_build.pl at line 158
(my $step) = $db->resultset('BuildSteps')->search({id => $build->id, type => 1, outpath => $outPath}, {});(my $step) = $build->buildsteps->search({type => 1, outpath => $outPath}, {}); - replacement in src/script/hydra_build.pl at line 168
(my $step) = $db->resultset('BuildSteps')->search({id => $build->id, type => 1, outpath => $outPath}, {});(my $step) = $build->buildsteps->search({type => 1, outpath => $outPath}, {}); - replacement in src/script/hydra_queue_runner.pl at line 109
print "starting build $id (", $build->project->name, ":", $build->attrname, ") on ", $build->system, "\n";print "starting build $id (", $build->project->name, ":", $build->job, ") on ", $build->system, "\n"; - edit in src/script/hydra_queue_runner.pl at line 134
}if (scalar(@ARGV) == 1 && $ARGV[0] eq "--unlock") {unlockDeadBuilds;exit 0; - replacement in src/script/hydra_scheduler.pl at line 158
{finished => 1, project => $project->name, jobset => $jobset->name, attrname => $jobName, buildStatus => 0},{finished => 1, project => $project->name, jobset => $jobset->name, job => $jobName, buildStatus => 0}, - replacement in src/script/hydra_scheduler.pl at line 221
, attrname => $jobName, outPath => $outPath })) > 0), job => $jobName, outPath => $outPath })) > 0) - replacement in src/script/hydra_scheduler.pl at line 234
, attrname => $jobName, job => $jobName - replacement in src/script/hydra_update_gc_roots.pl at line 41
{select => [{distinct => 'attrname'}], as => ['attrname']})){select => [{distinct => 'job'}], as => ['job']})) - replacement in src/script/hydra_update_gc_roots.pl at line 43
print "*** looking for builds to keep in job ", $project->name, ":", $job->attrname, "\n";print "*** looking for builds to keep in job ", $project->name, ":", $job->job, "\n"; - replacement in src/script/hydra_update_gc_roots.pl at line 48
{ attrname => $job->attrname{ job => $job->job - replacement in src/sql/hydra.sql at line 14[5.4250]→[5.4250:4302](∅→∅),[5.4302]→[5.4134:4186](∅→∅),[5.4186]→[5.4354:4387](∅→∅),[5.4354]→[5.4354:4387](∅→∅)
project text not null, -- !!! foreign keyjobset text not null, -- !!! foreign keyattrName text not null,project text not null,jobset text not null,job text not null, - replacement in src/sql/hydra.sql at line 88
id integer not null, -- !!! rename to "build"build integer not null, - replacement in src/sql/hydra.sql at line 107
primary key (id, stepnr),foreign key (id) references Builds(id) on delete cascade -- ignored by sqliteprimary key (build, stepnr),foreign key (build) references Builds(id) on delete cascade -- ignored by sqlite - edit in src/sql/hydra.sql at line 373
jobset text not null, - edit in src/sql/hydra.sql at line 378
foreign key (project, jobset) references Jobsets(project, name) on delete restrict -- ignored by sqlite