S5PV6IIMKJ7PGWIFLLXERHYF3BCP2UEGFRZEZLD6UUBLVEZXJLUAC D5QIOJGPKQJIYBUCSC3MFJ3TXLPNZ2XMI37GXMFRVRFWWR2VMTFAC SHZLOM5M2NVH2J7CJJMS562EV5NPCTNWQ5P3K2SSL2YFYUI7PMIQC GNIEG2GCT6BUYHY2WXUAQVKHSYB6TVQT52O5GEY6COLKFK4ODCCQC 3E6IP3R3JGH76PNGG7RCADV65KOV24HQXPXNLVVYIQ46AVYJRG3AC LBNVQXUBEZ45SOTGVXK5UEZXIAIZTJLWZNUYFI4JZ6J65N3KPDVQC IN272KZWHENW2TCR3LWQ6OZAEESJL5S7AEL3GYLJTWHJUDE6HADAC 2GK5DOU7ODF4WBSN3QTD3WIO52VTL2LOAXKGCDEMMAQPTEO4A4HAC PHX2HIVGHHKCAX6VNN2WXD4LRGSA74KQMJCCTMHK7HS6JPELVECAC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC CLJQCY2XHIDNNMFBJ5PK3GQEN6RFALEFKXBJRWZPEIKR4PR5ZQ5AC BVOPAMLSAU4UTV3DUX53OYDMXP2SETAQVUKAYE2OTCVVN4RD7LLQC ZVTSOVHNQNQCRF3N44RKDQSL3UM7HSLTAXICMWEE6EIA6SWJXZCQC M552HLIAP52D42AVXVC5SGROAYN2TBCEUZOXESWEMBBUX7G3U6TAC X27GNHDV5KPZ5GSH6DCAJMNCEMZLCP7M43JWF2X3O5QWXMOX273AC ECBA3GQOGTF73Y7A5EFUXZ5PDIZ5NPJM3WMOUJTE3AEK2PZQX3MQC FHF6IZJQPUQHY5QWQYRPZVDBRLHREWRHGNKVQDT7F3GQKKLZXJKQC TWVSALRLHGSY6SHLMLT53K2A5SUCPU3SNFPZ2KWYOLDQUJBSZ2OAC RU7AQO7U4HCWJNQTR2KRGDLLG24WYD47MWIHREV6SIAPCPDQHAWQC S66BOMVUACAUDSGSDWP7ZIXVMZSQHWXOZYVTB7ILUCWZ7DDFAKVAC GWCV3TQVFLUPBREUFRJV6ACJGQHD24NIUAVQQFURMXT3GL2SPPZAC YAPITGB3ENS6PXRBFC647ESCQUYG442DKHUPM46PJKCKTMHWGVXAC VCOSLZRPLRS3ITD2JIPKZPMTCEPHN4WEFKTE5TKH3RAZ7WJKMQ4AC JLDUSNUOOQNL63BOPXIWZOWFRQ5X35RWG33PJB3J3KMR6QR7TN7QC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC H7CNGK4OJNRYZQGPLBGR72DULLEPFQ5UISF5J24D7IMA7SYW5LGQC XNCWZ7OTIBIGWKAV7ZWCNO6QGQGAWRCZYK4HZMYPURJ7CLMRXUHAC POPU2ATH2HHBTGHKRAV3EY2K55P664IARI3YJGLDKVJ6PQPXBQ4AC 6BLUKEQ2M5RGWMPXPYIFIEVEUBV4PYAZ75S2WSBIATMRGYFMQZHQC # Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9gWr8DPEeH2BjoHT3nt0Lw
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uxfS8+GnU06sbx6nvWzTSQ
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:GsPyt1OUQHWN6z7mSpNW2g
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:wnnwDGQMGr2YAu++PYRSuA
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zIpamqoL0AxNFDpQ/W1TVg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CGlUjhJozOA4VCYaFtyhqw
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:McWRZEMJtjFIcR4LplCc9A
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:X+Pz2XzTBNU3XdEcg49RyQ
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zuyAJq4T5Ynsq920Pd7hLg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TtcOwOIZHO0vLSJ1CXF1bA
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:6taCYZNB0HaY+fvDjUhrYQ
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xqKyjCWVdoTyQJC28K3WXA
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Jhu1KxMfSF1Y1b4VGUqTzg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Eo9F2GRzgzTGGx15JWBv6Q
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9aQa6Zo6z3lj/qFHNF5//w
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:KeKwcnnPNoVO4eNr9+y+1g
package Hydra::Schema::Jobs;use strict;use warnings;use base 'DBIx::Class';__PACKAGE__->load_components("Core");__PACKAGE__->table("Jobs");__PACKAGE__->add_columns("project",{ data_type => "text", is_nullable => 0, size => undef },"jobset",{ data_type => "text", is_nullable => 0, size => undef },"name",{ data_type => "text", is_nullable => 0, size => undef },"active",{ data_type => "integer", is_nullable => 0, size => undef },"errormsg",{ data_type => "text", is_nullable => 0, size => undef },"firstevaltime",{ data_type => "integer", is_nullable => 0, size => undef },"lastevaltime",{ data_type => "integer", is_nullable => 0, size => undef },);__PACKAGE__->set_primary_key("project", "jobset", "name");__PACKAGE__->has_many("builds","Hydra::Schema::Builds",{"foreign.job" => "self.name","foreign.jobset" => "self.jobset","foreign.project" => "self.project",},);__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" });__PACKAGE__->belongs_to("jobset","Hydra::Schema::Jobsets",{ name => "jobset", project => "project" },);# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:wJFyUvUACQHpaW/ktaYtOQ# You can replace this text with custom content, and it will be preserved on regeneration1;
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fBv361MRwuWvAJQnOLZDIw
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:V8h/34X4hs4PKhxKsFgy9w
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:S8AQqv8/GkLkXpPutV4N0A
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1XdnQh4HnXU/iOyNvv8QWg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xYDUCEXRPeVdFJBQnG/Wog
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oZ81xw7qIjVkQKjRdOFW9A
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9ZqA/21u40pt4t85YrYbeg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:z+RXYaHk0RXJfFirBe175A
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Ta71pOzVsej/w0FoHIUMbg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iWBkyucz/pXtzI+s0iP0EA
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0DtIgm5jznjy1l3809b06Q
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eeWkr8kYyCvFVDZ3YzpI1Q
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:WUSl5Uivcl6E1KLxiq+89A
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:z83sYSKRnt5mc2etYvH6Zg
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:x/HXSH7s3bgPJSLK71hV9w
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:WRiW+nBfh/X+TMqYu0PI6g
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uP86PxN/ZWgy5PRVU7Qgow
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Gw6X/Et2+whq/S7o63zF8Q
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-12 17:44:15# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oIv4qqdjLKRDgAYXHHTz8A
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aJVSTLLx1pgutjETaqTWXA
<a href="[% c.uri_for('/build' input.dependency.id) %]">Job <tt>[% input.dependency.project.name %]:[% input.dependency.job %]</tt> build [% input.dependency.id %]</a>
Job [% PROCESS renderFullJobNameOfBuild build=input.dependency %] <a href="[% c.uri_for('/build' input.dependency.id) %]">build [% input.dependency.id %]</a>
<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>
<td>Job [% PROCESS renderFullJobNameOfBuild build=input.build %] <a href="[% c.uri_for('/build' input.build.id) %]">build [% input.build.id %]</a></td>
if (scalar($db->resultset('Builds')->search({ project => $project->name, jobset => $jobset->name, job => $jobName, outPath => $outPath })) > 0){
# Mark this job as active in the database.my $jobInDB = $jobset->jobs->update_or_create({ name => $jobName, active => 1, lastevaltime => time});$jobInDB->update({firstevaltime => time})unless defined $jobInDB->firstevaltime;# Have we already done this build (in this job)?if (scalar($jobInDB->builds->search({outPath => $outPath})) > 0) {
$db->resultset('BuildInputs')->create({ build => $build->id, name => $arg->{name}
$build->buildinputs_builds->create({ name => $arg->{name}
# 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}};$db->txn_do(sub {foreach my $jobInDB ($jobset->jobs->all) {print $jobInDB->name, "\n";$jobInDB->update({active => $jobNames{$jobInDB->name} || $failedJobNames{$jobInDB->name} ? 1 : 0});
foreign key (project, jobset) references Jobsets(project, name) -- ignored by sqlite
foreign key (project, jobset) references Jobsets(project, name), -- ignored by sqliteforeign key (project, jobset, job) references Jobs(project, jobset, name) -- ignored by sqlite
);create table Jobs (project text not null,jobset text not null,name text not null,-- `active' means the Nix expression for the jobset currently-- contains this job. Otherwise it's a job that has been removed-- from the expression.active integer not null default 1,errorMsg text, -- evalution error for this jobfirstEvalTime integer, -- first time the scheduler saw this joblastEvalTime integer, -- last time the scheduler saw this jobprimary key (project, jobset, name),foreign key (project) references Projects(name) on delete cascade, -- ignored by sqliteforeign key (project, jobset) references Jobsets(project, name) on delete cascade -- ignored by sqlite