* Mark the "current" builds in a jobset, i.e. those corresponding to
[?]
Oct 2, 2009, 4:06 PM
S6OISBQ3HPFHAAQ5ENG7N3MNGOPNEJPIFKSSA5N4G6KJQTQBSSLQCDependencies
- [2]
BTUDUY6F* Provide some redirects to the latest successful build for a job (or - [3]
LZO3C2KI* Hack around those SQLite timeouts: just retry the transaction. - [4]
IWHFLFVV* Randomly permute the order in which builds are added. This is - [5]
AHTEIK7G* Added a maintainers field to the Builds table. - [6]
X5UVREJY* PostgreSQL compatibility. - [7]
SLWFKMU5extra indexes - [8]
SHBLLAVH* More global substitution. - [9]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [10]
DVNWJXWW* Generic declaration of build products. - [11]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [12]
B72GLND4 - [13]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [14]
XNCWZ7OT* Get the job priority from the meta.schedulingPriority attribute. - [15]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [16]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [17]
7ZSVXUGFsequence fix for postgresql - [18]
KOTB7BKV - [19]
H7CNGK4O* Log evaluation errors etc. in the DB. - [20]
VCOSLZRP - [21]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [22]
WYN733ST* Store build duration, handle cached builds. - [23]
FDE3BJAP* Refactoring. - [24]
CLJQCY2X* Store info about all the build actions and allow them to be - [25]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [26]
BVOPAMLS - [27]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [28]
PHX2HIVG* Store info about the build inputs in the build record. - [29]
GWCV3TQV* BuildInputs table: link to dependencies, include store paths. - [30]
ZEHSSVFG - [31]
YTZOC7C5* Editing of jobset inputs. - [32]
IK53RV4V - [33]
D3DIBMOK* For products that are directories (like manuals), allow a default - [34]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [35]
ZVTSOVHN* Support Subversion checkouts. - [36]
SHZLOM5M* eval-jobs -> hydra_eval_jobs. - [37]
S5PV6IIM* Represent jobs explicitly in the DB. - [38]
37R34XJO* Negative caching: don't perform a build if a dependency already - [39]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [40]
POPU2ATH* hydra_scheduler: use eval-jobs. - [41]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [42]
YAPITGB3* Boolean inputs. - [43]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [44]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [45]
CMU3YKOU* Store the release name. - [46]
M552HLIA* Support variant builds. - [47]
X27GNHDV* Basic job info in the database. - [48]
3ZCEPLNO - [49]
BTOXLRG3* Record the input containing the Nix expression (release.nix) in the - [50]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [51]
TLZ2SPBR - [52]
RAKTHYAI* In the job status and error pages, show when the status of a job - [53]
TQKGQ5R3 - [54]
S66BOMVU* Added authentication. - [55]
L2E6EVE2* Merged the Build and Job tables. - [56]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [57]
7YBYT2LQ - [58]
NI5BVF2V* In job inputs of type "build", allow the project and jobset names of - [59]
J5UVLXOK* Start of a basic Catalyst web interface. - [60]
67P45PY4 - [61]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [62]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [63]
R5D7DZPE - [*]
N22GPKYT* Put info about logs / build products in the DB.
Change contents
- replacement in src/lib/Hydra/Controller/Job.pm at line 29
$c->stash->{systems} = [$c->stash->{job}->builds->search({}, {select => ["system"], distinct => 1})];$c->stash->{systems} = [$c->stash->{job}->builds->search({iscurrent => 1}, {select => ["system"], distinct => 1})]; - replacement in src/lib/Hydra/Schema/BuildInputs.pm at line 106
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:02BDWXRn4LMcb0LFjHXqjg# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3l2Qu/wpPEb/xsXoyeRviQ - replacement in src/lib/Hydra/Schema/BuildProducts.pm at line 94
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Fqzw8pcHMrUjdJZ/a43D3w# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/AUVD2QjjkeQmFkKEim0Gw - replacement in src/lib/Hydra/Schema/BuildResultInfo.pm at line 89
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:KjrreyjxFwFTGDzdA9J42w# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:L/qLimgzcHeLjsKom3t1XQ - replacement in src/lib/Hydra/Schema/BuildSchedulingInfo.pm at line 46
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jgOkt31QNifyPD8Y0rkVBA# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:I2cNoG9FOWDlICSy4Ndftw - replacement in src/lib/Hydra/Schema/BuildSteps.pm at line 94
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7z14GDq6a8ndBoj3Mx/3TQ# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oCn8y9Nsffa6WOnm44lyqQ - edit in src/lib/Hydra/Schema/Builds.pm at line 119
"iscurrent",{ data_type => "integer", default_value => 0, is_nullable => 1, size => undef }, - replacement in src/lib/Hydra/Schema/Builds.pm at line 166
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:mTc++yn7RST163jLNJkXaw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:8r7Yv4O8WF2YU4sOjn0Q8w - replacement in src/lib/Hydra/Schema/Builds.pm at line 222
makeSource('JobStatus' . $name, "select x.id, x.finished, x.timestamp, x.project, x.jobset, x.job, x.nixname, x.description, x.drvpath, x.outpath, x.system, x.longdescription, x.license, x.homepage, x.maintainers, b.id as statusChangeId, b.timestamp as statusChangeTime from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 $constraint group by project, jobset, job, system) as latest natural join Builds x $joinWithStatusChange");makeSource('JobStatus' . $name, "select x.id, x.finished, x.timestamp, x.project, x.jobset, x.job, x.nixname, x.description, x.drvpath, x.outpath, x.system, x.longdescription, x.license, x.homepage, x.maintainers, x.isCurrent, b.id as statusChangeId, b.timestamp as statusChangeTime from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 $constraint group by project, jobset, job, system) as latest natural join Builds x $joinWithStatusChange"); - replacement in src/lib/Hydra/Schema/CachedPathInputs.pm at line 50
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:sEZCtuR96OmFAZe4ykVTUA# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eLemrXw7iydgI6zhFrghRg - replacement in src/lib/Hydra/Schema/CachedSubversionInputs.pm at line 43
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ImarwuHMkKrQ2GemxREDig# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:f2Xn8X5aO9Gud7LHrc/b2g - replacement in src/lib/Hydra/Schema/Jobs.pm at line 78
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OFEAwA4W5q0AF8uZ3JswFQ# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:w5CXchrT0/ueNgxnKv6TPg - replacement in src/lib/Hydra/Schema/JobsetInputAlts.pm at line 72
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:kcIcgSux+SzIH7FQs2cnAw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CQg509K7bBReX30DeMC7ww - replacement in src/lib/Hydra/Schema/JobsetInputs.pm at line 68
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SkF1SaumgGAQvR9mUbPV+Q# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:FzkQQT8t8OET0a0teF3lHA - replacement in src/lib/Hydra/Schema/Jobsets.pm at line 104
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lMdNiE6x4qZLK14+jEM7YQ# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eu0jlMKE2aMvQRv4LynlIA - replacement in src/lib/Hydra/Schema/Projects.pm at line 79
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lDNoBncP2KhnrfbQIg+Usw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aBN2ry0QEPIhQu6tlgk7RQ - replacement in src/lib/Hydra/Schema/ReleaseSetJobs.pm at line 69
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xaWTZqtzPyMq/xqi0ZFCDg# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Mm9VR//LwfM88N54dtmuxg - replacement in src/lib/Hydra/Schema/ReleaseSets.pm at line 48
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:sYojSdWhlGMAL7Vj/UynBw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:c6FKyR68F1a8wLivK9ztog - replacement in src/lib/Hydra/Schema/SystemTypes.pm at line 24
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:QYzvQmgXtV3NURhO5j5F4Q# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SYnu+3J84FXFqkSu8jxkPg - replacement in src/lib/Hydra/Schema/UserRoles.pm at line 31
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:syo00cqS/fp5mJt2jg+YJw# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:pRBijh3yc0x4knK6tU4iTw - replacement in src/lib/Hydra/Schema/Users.pm at line 53
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ZH7GmAkTPdZm7G5aCp746A# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:d4m+IH9KxIcgId+XF23txg - replacement in src/lib/Hydra/Schema.pm at line 11
# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-07-07 14:36:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:tt53dmgGYiV3yqHvnrSwkg# Created by DBIx::Class::Schema::Loader v0.04999_06 @ 2009-10-02 15:59:19# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uBemU8brohK9UDFJ9KC1iA - replacement in src/script/hydra_scheduler.pl at line 255
my ($project, $jobset, $inputInfo, $nixExprInput, $job) = @_;my ($project, $jobset, $inputInfo, $nixExprInput, $job, $currentBuilds) = @_; - replacement in src/script/hydra_scheduler.pl at line 276[8.5467]→[8.5467:5599](∅→∅),[8.5599]→[8.2879:2925](∅→∅),[8.9604]→[8.2879:2925](∅→∅),[8.2925]→[8.9646:9666](∅→∅),[8.12182]→[8.9646:9666](∅→∅),[8.9646]→[8.9646:9666](∅→∅)
# Have we already done this build (in this job)?if (scalar($jobInDB->builds->search({outPath => $outPath})) > 0) {print "already scheduled/done\n";return;# Have we already done this build (in this job)? Don't do it# again unless it has been garbage-collected. The latest# builds for each platforms are GC roots, so they shouldn't be# GCed. However, if a job has reverted to a previous state,# it's possible that a GCed build becomes current again. In# that case we have to rebuild it to ensure that it appears in# channels etc.my @previousBuilds = $jobInDB->builds->search({outPath => $outPath}, {order_by => "id"});if (scalar(@previousBuilds) > 0) {foreach my $build (@previousBuilds) {if (!$build->finished) {print "already scheduled as build ", $build->id, "\n";$currentBuilds->{$build->id} = 1;return;}}if (isValidPath($outPath)) {print "already done as build ", $previousBuilds[0]->id, "\n";# Mark the previous build as "current" so that it will# appear in the "latest" channel for this# project/jobset/job.$previousBuilds[0]->update({iscurrent => 1});$currentBuilds->{$previousBuilds[0]->id} = 1;return;}print "already done as build ", $previousBuilds[0]->id,"; rebuilding because it was garbage-collected\n"; - edit in src/script/hydra_scheduler.pl at line 306[8.5627]→[8.2926:2961](∅→∅),[8.9677]→[8.2926:2961](∅→∅),[8.2961]→[8.9950:9959](∅→∅),[8.12224]→[8.9950:9959](∅→∅),[8.9950]→[8.9950:9959](∅→∅)
print "adding to queue\n"; - edit in src/script/hydra_scheduler.pl at line 318
, iscurrent => 1 - edit in src/script/hydra_scheduler.pl at line 321
print "added to queue as build ", $build->id, "\n";$currentBuilds->{$build->id} = 1; - edit in src/script/hydra_scheduler.pl at line 432
my %currentBuilds; - replacement in src/script/hydra_scheduler.pl at line 436
checkJob($project, $jobset, $inputInfo, $nixExprInput, $job);checkJob($project, $jobset, $inputInfo, $nixExprInput, $job, \%currentBuilds); - edit in src/script/hydra_scheduler.pl at line 439
# Mark all existing jobs that we haven't seen as inactive.my %jobNames;$jobNames{$_->{jobName}}++ foreach @{$jobs->{job}};my %failedJobNames;push @{$failedJobNames{$_->{location}}}, $_->{msg} foreach @{$jobs->{error}}; - edit in src/script/hydra_scheduler.pl at line 440
# Mark all existing jobs that we haven't seen as inactive.my %jobNames;$jobNames{$_->{jobName}}++ foreach @{$jobs->{job}};my %failedJobNames;push @{$failedJobNames{$_->{location}}}, $_->{msg} foreach @{$jobs->{error}}; - replacement in src/script/hydra_scheduler.pl at line 459
});# Clear the "current" flag on all builds that are no longer# current.foreach my $build ($jobset->builds->search({iscurrent => 1})) {print "current is ", $build->id, "\n";$build->update({iscurrent => 0}) unless $currentBuilds{$build->id};} - edit in src/script/hydra_scheduler.pl at line 467
}); - edit in src/sql/hydra.sql at line 29
isCurrent integer default 0, - replacement in src/sql/hydra.sql at line 414
create index indexbuild on buildproducts(build)create index indexbuildtype on buildproducts(build, type)[8.3104]create index IndexBuild on BuildProducts(build);create index IndexBuildType on BuildProducts(build, type);