This table has been superfluous for a long time.
NZXX6PLDWEDQHXFF5JCZWGB22VA3WSDYLX65K6BQ5GNWPOE43N7QC OYBPENNMGMZEF6O6CW2KMVOUB3SEXIUSHAQHLNEMPNURBOEDL5KAC CJRWFVKZVTU2FBPN4J7OVIHO5YVPLW2QUKISN4PCTLXSOABDIA2QC LSNBPB3Z6NEUBFJZ2PXROYSLGPWOEK7SEIBXN2NKLT4EAGGKIOCQC IP5MOFDGXEUW3LUKL6IJULI2OX5KQJ5TIOWJFMTVMVL7VGYCNYMQC PMTIAQEPKFUZSK7HGDHGLFXNXOPVDTZV35JS7COVEKPVIPS7LUIAC PDZXZZPZX3GUJGYUNAKB5ISRNF3ED4K4I63XJA2GZQNGSTQNMPAAC JOST7ANV6KYQ2OWNCJJZ4CCTXKKYKSJKPASALMOSZCVP3G7JPO6QC 46RR7WQCT56XERRUXIRHCL2UP7HSJJB7J4E2WTV44ONTSBU4OHNAC 5BXLRZPMT7K6AWL4SNRVGO2WYFVSLCUBGT2FJM5O5N4W4PEIBIMAC X5W5PGGM7UZOW4WRVRVU5QFZW4VIHRNZXCSOLN2WMDTSQHIU3SUQC PNR4DR6OE55PJLDZZOIC2RQS4SWIQ6UGG2DLHIQKMUFATORWQOUQC VB6DJ5R4XFWXTVAUT2JKLVZZKD7X3MVBKAMNR2GJLUFJE6BJDBWQC LPPZS34Y3DNUDIPFFYW3WINVNUM77BLOTN7OVH7YZUF6KJ7TG5RQC N74SRHS6XG3M4II7HDCJZKFF6RFXEVGBUN3DN4FUEMELHYCGMHLQC VGUFW62F2DVRDMISV7TFO4BWLXKJKINFDVMC52BPZGIF6MSSGJRAC O5DYTVGAAJRLN2LMLCGHRDCASLLXNY4JITO7AGAGQ26OM4QZ6YLQC LBNVQXUBEZ45SOTGVXK5UEZXIAIZTJLWZNUYFI4JZ6J65N3KPDVQC GJFYEU3SVP7TDSYXVZEYGKN4NVWSZX4754PPPTOYPRHUO5RMDWPQC DEMSSSB22UI2ZN26C56UYO4NZWMDCRYKLAQARGOTSORSDXX3ZNNQC UWVMQIAC2HQNSG2JQOPZGUOCQ5V2JFP2F7RCTF3WJLK7NHSD5PAAC 75XUS62YF7OK4S45RCZ5OOASXEBIEDNDBYEEMOCBDHVXV4GA3NLQC NQJFHYBIP2D34U642PZI77QKMZYQIO5QAC5YOXXQZXNPBLP7OEWQC ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC CQQSJLONTAKIWT4AEEDZFLFAFCSIPEGWLBJDJIS7VJK6FJ3LZ2RAC 3PNG7NIBQQURUUPRVQXYL342OT7JUUYOMY2JJNP6YDX7SYJDZMYAC R6B5CAFF3BWJPW6I5YGKXOKKCW6S7D7AHO2HLZVFUW3NL77ZW44QC 2QISRMJKMVAGTFW3FBHEROD5KV4EQFRJ7U3RBN2H3XBGRZSYMWSQC CQTN62OHT4DY35E2MJEG7GFTVNEE5KRDMV6ASBQLBHN7BUDK7WHAC C3AG65SWAGDSML5MBD4ZPRCHI2LNNDN6IQZOI3HLYRJRPAW3QPAAC G2WXEQHE6WCBN25VLO6XF3FJAOCJLMRKYOIQLETGIWTR6ON2AIVAC MMBKNEQBZPMWFPMZ7F77ZRURR5WWX6ONNTJBYBNUQKA2GB5MXYPAC EVYSAFB2LYZWBCFCEZSV6JVGRMYN3ALIZCBZG3IZVUDUXCLFYELAC KSBB33RE2PK5SFN7ZMOTZJQHZB4JYIIUUKWDSD3LSZ5GD465AJHQC UDS5VIT6Y4OW37PXV33I4POYWI3PIZXM52LWTYUB7GXETCZDV37AC T5BIOVJEMBIASP7EKQVV2N3VD6I56UXH6LCD5I33BDQEVHJAMGKQC BB2KXLXZ7NTYXKP7DHSPDKLKZG4LCV3YP7NRT4Q5AY5Q2KUPA4EQC XAJFR6SR6Q56FCL3VYQTP534HD7JFZAMCYY376Y7DVZY4BXM2UWQC 6GZZDDQBAIAZJAESJDIT5JKVY6F7IQTJHG6QT2HHBMK2EWE2MHCQC IT5AXPY2VAG2ECQN23UROQCTC4AUN7ZMCBVJC3ZK2CT4MSFSKVUAC SJN2QPWHFYKX7CJMW4XZHI2P2THH7MECZZIHQMCH6EKBZ45G3DOAC UICHT2PSN2QOCHP6MGY5QQJUDU4IF6FBIOJLBA55QBJDK6ST566AC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC GK326R5NJYVROQQUOBQT26P3OV6OZLMLTZRU6VIDR2HEOOTRAGAQC LCLXI7PTVYQLR2SGXVIAJCLKW3H2TTM3UVJSZHAO7VMISNIHTXOQC WUCOEIFANBM3WXZ2IWEITZ6FKBKXASVWH2LCYRXB4C22H5ADLWVAC EJ7C77C3QLT7JPRHFTDIOY4WAXPXAXMAPWJYWEPKGPO5CCGD3SZAC XJRJ4J7M6BC433TBLWHHKX7UYYCFX6M7ZQLUEYYTREPCSM6M3RDQC JAUTUNGIF2UZ4YJYL5YXBUUKO774OLQZKAJ7VZNUEWAKVJL5L2DAC RPTSGIRCCSEDEBRB5H465A5JULJH5KFYAMR573SKNTPSJSCYEICQC KAZWI5G4DN2WUW7L2KWZR3D3QQJON4ISQYP7CRLC5HAOPIDYQGRQC D5QIOJGPKQJIYBUCSC3MFJ3TXLPNZ2XMI37GXMFRVRFWWR2VMTFAC S5PV6IIMKJ7PGWIFLLXERHYF3BCP2UEGFRZEZLD6UUBLVEZXJLUAC SB2V735VJ2CDHGCXRUA5FOYHDRXQFVOZ3KXC3YKXWRNW6DIX7RXQC 3HCBU2FAXZMSF4JJR5Q64BSN66MBOGVETNHK33V2WSNDGOF4HHQAC JM3DPYOMVNMCL5GMEYC3Y4NDRGTNIFBBFTPGPVT66GPENVPU7EVQC LZVO64YG43JD7YMZSCTZNOBS5ROZA4FMPKJW2YOMHX2V5PTGBVWQC IGR322YPZG7IX33I6CSF4ZIHFKXCT4ERC2LC73MW6PN7W53D73BAC SIDK2E7VTH36ETTT7VQWKUXIJE3GQCH4EA33TJG3S4ZTOPTKYCNAC 5ZRYT2YEUWY655IVH6GQBHXZJTE756X2TUCKTREFPKVDMRDYQWPQC AHTEIK7GGPHUC3AXIJ2NX4TI3RLX65XYKGAIIC6MC2S6I6QPWTAAC Y6AHH4THYQA43V77L43YM42DYRPCMDSWLUV4NKWAQYMPL4NTUIPQC KN3VYE5P2RJB3KZ355LA5C2T2D5S2IR3QZFE53AJIWUVMETEEYDAC W5OAZWPDZOGVAL5P4ROVZSZGCSJBMPRALW6SCGV6L7A5DBAK2JLQC E7M2WP7AQPTJR3DUI3ONEEG3GW36EA4CM77HTZ4KYVETJ7VA3LEAC YTIDBFGUR65L6D6OKGQWTKHJJQK3NCC6WDNQFTA7E6EATVOX4Y5AC 3E6IP3R3JGH76PNGG7RCADV65KOV24HQXPXNLVVYIQ46AVYJRG3AC KOTB7BKVML6T6S5ZNTQ6456FMGCRZCP3E3KVWCOW7T6SPRHC53LAC 4S5JF5JPKWTDYHFJMTXOFTDAMYHD5ON2UBTLMGVYPJCP6QYIM2EAC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC FTPCV25MOLQUNR5CAR453W7T7QTUZRLPLEOSDZ5HSDFAXQZVHOYQC MWXDVTS3V6SLJ27SJUVN3LT34H3ZMLHPYQCDV7C6KPLHV2QTEF7QC 5SHCWE7XPQORSOLY7HGAIK2ODKBFPY4KVXRL2W7X6D4WALU544HQC KPZNJ33UUF6TK5OPB6K5KLM3ZEK7YV3IF32HTLJFURCO6ICDMGYAC FYO6NECE4YJC76HQIG35NNJABODV7KNQKREK5YKZU6O2MNNSQTMAC X27GNHDV5KPZ5GSH6DCAJMNCEMZLCP7M43JWF2X3O5QWXMOX273AC SJPEC375K7K4PJRGHLFKAOXX5FFAJCGNVIARROGOR3RISTZBYBDAC ZWCTAZGLJZQNTYWTC2XQUKMILJF6JGDL5IND6QNYWK4FIGMLRFXAC EYNG4EL4N7LDQD4XKVVLYCDBCRHJZIEEYU7KQWDTAVADVE34TVZQC BVOPAMLSAU4UTV3DUX53OYDMXP2SETAQVUKAYE2OTCVVN4RD7LLQC FHF6IZJQPUQHY5QWQYRPZVDBRLHREWRHGNKVQDT7F3GQKKLZXJKQC SHBLLAVHMMHOPCJ5NPGDZQPVRAMPMGXSFEMX7H7BETW6GTRGUUBAC 7ECJWNVXNO3BKM7B7FIFIRBE77QET5PK2C3XKVQUXCYKHDP3V4UQC JPTXSWBOYRZMQDAYCJZBXVABO6GFQQ3CFSLX4FPXKLIWURPEWKMAC 4JS4DWHDRVNPIV3QCHLVJP6ZEAO5FHOK7NQ5FGO2JVZE6BZDZAIAC PZL3SZM3U3BYJX2RGYXC6NMBG7WQHFWHSYDYXZ7Q5VZA3EDYVPIQC YTSIRIMKV2EN6CMO6LFX5J3NBJJYWBJKYDU3Z53CGXCIWP3FYI2QC R2PON6R7RJT63XVKGEXAIKB76RHIQL3WCDTZQM5JLKAZ7B5AZAFQC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC 2GUAKGTBTNFFER343SQWSLFYIXXHJLDSGH5JHF7QMC3AVZB7Q3TQC INJAHTMFSMWZQJWRCJEWTVPFZBTNAT3522GC2W7FWJH4LFAURAFQC 3LEGFJFPEUE7RLBS2GYULCKIOPGI3UNGC6FYGAF7F2HZ2TDHKVUAC WGUKOIQZOQ64I6OJHGR4RSRI2HPH4RXADNSPFBWRETKO7OWCET4QC 5GRW5XU4PXOROJYRVOSNP3KMQMEVEQWHJD26AVCBADW7IF72NI7QC LFZQIVPXJFWWSTTIVVSWYUTTFDDBQBEIV5657RIHMSKK634Z2WFQC N4ODPYP7XKBCZRAA6R3U23VHUUXEIB7KFQG2QAPDHFKYCUKF673AC WYMEG4VPYR4AE54S5KJYL6WDILJ4GDVJA23AHKUZDLTFFZOPAIBAC FAUCW4NHW33VMQIEIZQFUKOEKQDR33HX3ETI2PF7X4LCV2CFV53QC QL55ECJ6KMMBUOWQ6LKSOVN7L43CH4S6SPE2AQ3VX3KSGC32RP4AC NRSKJPP4FYTEKWNLVRK2QZDL6P24VJAC6R6NUBVX77JSUEBVRISAC OEPUOUNBNTHTFZVDXREGBQCKFRCWMVP2MDVK4OA47VK2DBKEWVYAC ZPHREC7X2TVM4OQJGTPA3Y3WOOJGTV3RXSPRI2ZFTZKIPIRRCUYQC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC CUFVKLLAL54OHDMYUHVJZK46LLX7RJMUJUE5HWYDCGIOQ5TIGXZQC HHWCS3QQCJPWMHOBYZMIL3TCHH66NOHTS4I3XM3ZIPD62Z75XQAAC VU2OLHD246DFWL2WPFSKWPLXTN3WRL25TSRU4PJMJBNWDF35OFRAC B7ENVLRS2KLKEG66TY5G4EW6M274JZOBDUCRB7BFBXLTBG455STQC PHX2HIVGHHKCAX6VNN2WXD4LRGSA74KQMJCCTMHK7HS6JPELVECAC RYTQLATYOZ6ODIKYVJ63TC4OIQBXHSCV3NA2YD4NFP7443GQVSRQC FAIJDQKZH6SUUNCKW5RIOZ37YRAO5ACS6FX76MHRNN53LDBWO6ZQC S5NPXZG34PZZ5FIIAQ2IO72G6PAQC4JZ2WS2CVKTO623BNQKGMHAC HX4QYOYAKKFKK4KF6SZ6FQCM5ZF7ZFDTQUR4GS5WPPTYZASYZZUAC 7VQ4ALFYKJBFR46T3WZDMGOXNRR3QNJEJQVBYJM4HSJUOOUD6WBQC RBZRCTALK2SLKX6HDMBS25BRNYPK3GK364MGAVCXP3MW5CEW5TKQC PY5GVGC7QVTOTCZ52LRHUCUJY5MER6ADCMTC2FR2WQACQV4QV5CQC $c->stash->{job} = $c->stash->{jobset}->jobs->find({ name => $jobName })or notFound($c, "Job $projectName:$jobsetName:$jobName doesn't exist.");$c->stash->{project} = $c->stash->{job}->project;
$c->stash->{job} = $jobName;$c->stash->{project} = $c->stash->{jobset}->project;
{ aggregate => { -in => $job->builds->search({}, { columns => ["id"], order_by => "id desc", rows => 15 })->as_query } },
{ aggregate => { -in => $c->stash->{jobset}->builds->search({ job => $c->stash->{job} }, { columns => ["id"], order_by => "id desc", rows => 15 })->as_query } },
$c->stash->{metrics} = [ $job->buildmetrics->search({ }, { select => ["name"], distinct => 1, order_by => "name", }) ];
$c->stash->{metrics} = [ $c->stash->{jobset}->buildmetrics->search({ job => $c->stash->{job} }, { select => ["name"], distinct => 1, order_by => "name", }) ];
{ order_by => ["enabled_ desc", "project", "jobset", "name"], join => ["project", "jobset"], "+select" => [\ "(project.enabled = 1 and jobset.enabled = 1 and exists (select 1 from Builds where project = project.name and jobset = jobset.name and job = me.name and iscurrent = 1)) as enabled_"], "+as" => ["enabled"]
{ order_by => ["project", "jobset", "job"], join => ["project", "jobset"]
use utf8;package Hydra::Schema::Jobs;# Created by DBIx::Class::Schema::Loader# DO NOT MODIFY THE FIRST PART OF THIS FILE=head1 NAMEHydra::Schema::Jobs=cutuse strict;use warnings;use base 'DBIx::Class::Core';=head1 COMPONENTS LOADED=over 4=item * L<Hydra::Component::ToJSON>=back=cut__PACKAGE__->load_components("+Hydra::Component::ToJSON");=head1 TABLE: C<jobs>=cut__PACKAGE__->table("jobs");=head1 ACCESSORS=head2 projectdata_type: 'text'is_foreign_key: 1is_nullable: 0=head2 jobsetdata_type: 'text'is_foreign_key: 1is_nullable: 0=head2 jobset_iddata_type: 'integer'is_foreign_key: 1is_nullable: 0=head2 namedata_type: 'text'is_nullable: 0=cut__PACKAGE__->add_columns("project",{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },"jobset",{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },"jobset_id",{ data_type => "integer", is_foreign_key => 1, is_nullable => 0 },"name",{ data_type => "text", is_nullable => 0 },);=head1 PRIMARY KEY=over 4=item * L</project>=item * L</jobset>=item * L</name>=back=cut__PACKAGE__->set_primary_key("project", "jobset", "name");=head1 RELATIONS=head2 buildsType: has_manyRelated object: L<Hydra::Schema::Builds>=cut__PACKAGE__->has_many("builds","Hydra::Schema::Builds",{"foreign.job" => "self.name","foreign.jobset" => "self.jobset","foreign.project" => "self.project",},undef,);=head2 jobsetType: belongs_toRelated object: L<Hydra::Schema::Jobsets>=cut__PACKAGE__->belongs_to("jobset","Hydra::Schema::Jobsets",{ name => "jobset", project => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);=head2 projectType: belongs_toRelated object: L<Hydra::Schema::Projects>=cut__PACKAGE__->belongs_to("project","Hydra::Schema::Projects",{ name => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },);=head2 starredjobsType: has_manyRelated object: L<Hydra::Schema::StarredJobs>__PACKAGE__->has_many("starredjobs","Hydra::Schema::StarredJobs",{"foreign.job" => "self.name","foreign.jobset" => "self.jobset","foreign.project" => "self.project",},undef,);# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:33:28# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:C5Tyh8Ke4yC6q7KIFVOHcQ=head2 buildsType: has_manyRelated object: L<Hydra::Sc2hema::Builds>=cut__PACKAGE__->has_many("builds","Hydra::Schema::Builds",{"foreign.job" => "self.name","foreign.jobset_id" => "self.jobset_id",},undef,);1;=cut"Hydra::Schema::Jobsets",{ id => "jobset_id" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "NO ACTION" },);=head2 jobset_project_jobsetType: belongs_toRelated object: L<Hydra::Schema::Jobsets>=cut__PACKAGE__->belongs_to("jobset_project_jobset",__PACKAGE__->has_many("buildmetrics","Hydra::Schema::BuildMetrics",{"foreign.job" => "self.name","foreign.jobset" => "self.jobset","foreign.project" => "self.project",},undef,);=head2 buildmetricsType: has_manyRelated object: L<Hydra::Schema::BuildMetrics>=cut
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Roy7h/K9u7DQOzet4B1sbA
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-27 17:40:41# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:AYUVs6RdefFKw+g9Yxcu/A
);=head2 jobType: belongs_toRelated object: L<Hydra::Schema::Jobs>=cut__PACKAGE__->belongs_to("job","Hydra::Schema::Jobs",{ jobset => "jobset", name => "job", project => "project" },{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "CASCADE" },
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-06 12:32:57# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3IyFj/9Zf/hvmhBY4U/IBQ
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-27 17:40:41# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RIKKFfcKXFWIUeM8ma++iw
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-09 15:21:11# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Ar6GRni8AcAQmuZyg6tFKw
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-27 17:40:41# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:M61ikfnjORU7jDAH8P/j7w
=cut__PACKAGE__->has_many("jobs_jobset_ids","Hydra::Schema::Jobs",{ "foreign.jobset_id" => "self.id" },undef,);=head2 jobs_project_jobsetsType: has_manyRelated object: L<Hydra::Schema::Jobs>=cut__PACKAGE__->has_many("jobs_project_jobsets","Hydra::Schema::Jobs",{"foreign.jobset" => "self.name","foreign.project" => "self.project",},undef,);
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-09 15:32:17# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:P8+t7rgpOqkGwRdM2b+3Bw
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-27 17:40:41# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aDW78MCelU/ma953aTcHvA
=cut__PACKAGE__->has_many("jobs","Hydra::Schema::Jobs",{ "foreign.project" => "self.name" },undef,);
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-06 12:32:57# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dEIVgrFGilPfITprs6nYuA
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-27 17:40:41# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iBGJjFWiI9Wy9zwT7xGOEA
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fw4FfzmOhzDk0ZoSuNr2ww
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-27 17:36:07# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RRDQ6UQL/bjXPD+HO1s5ug
my ($self, $c, $job) = @_;my $latestEval = $job->jobset->jobsetevals->search({ hasnewbuilds => 1},{ rows => 1, order_by => ["id desc"] })->single;return 0 if !defined $latestEval; # can't happenreturn scalar($latestEval->builds->search({ job => $job->name })) != 0;
my ($self, $c, $jobset, $jobName) = @_;return defined $jobset->builds->search({ job => $jobName, iscurrent => 1 })->single;
<td><tt><a class="row-link" [% HTML.attributes(href => c.uri_for('/job' project.name jobset.name job.name 'metric' metric.name)) %]">[%HTML.escape(metric.name)%]</a></tt></td>
<td><tt><a class="row-link" [% HTML.attributes(href => c.uri_for('/job' project.name jobset.name job 'metric' metric.name)) %]">[%HTML.escape(metric.name)%]</a></tt></td>
<td><span class="[% IF !jobExists(j.job) %]disabled-job[% END %]">[% INCLUDE renderFullJobName project=j.job.get_column('project') jobset=j.job.get_column('jobset') job=j.job.name %]</span></td>
<td><span class="[% IF !jobExists(j.job.jobset j.job.job) %]disabled-job[% END %]">[% INCLUDE renderFullJobName project=j.job.get_column('project') jobset=j.job.get_column('jobset') job=j.job.job %]</span></td>
[% INCLUDE createChart id="closure-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'closure-sizes') %]
[% INCLUDE createChart id="closure-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job 'closure-sizes') %]
<h3>Metric: <a [% HTML.attributes(href => c.uri_for('/job' project.name jobset.name job.name 'metric' metric.name)) %]><tt>[%HTML.escape(metric.name)%]</tt></a></h3>
<h3>Metric: <a [% HTML.attributes(href => c.uri_for('/job' project.name jobset.name job 'metric' metric.name)) %]><tt>[%HTML.escape(metric.name)%]</tt></a></h3>
<li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest') %]">Latest successful build</a></li><li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest-finished') %]">Latest successful build from a finished evaluation</a></li>
<li><a href="[% c.uri_for('/job' project.name jobset.name job 'latest') %]">Latest successful build</a></li><li><a href="[% c.uri_for('/job' project.name jobset.name job 'latest-finished') %]">Latest successful build from a finished evaluation</a></li>
<td><span class="[% IF !j.get_column('enabled') %]disabled-job[% END %]">[% INCLUDE renderFullJobName project=j.get_column('project') jobset=j.get_column('jobset') job=j.name inRow=1 %]</span></td>
<td><span>[% INCLUDE renderFullJobName project=j.get_column('project') jobset=j.get_column('jobset') job=j.job inRow=1 %]</span></td>
);create table Jobs (project text not null,jobset text not null,jobset_id integer not null,name text not null,primary key (project, jobset, name),foreign key (jobset_id) references Jobsets(id) on delete cascade,foreign key (project) references Projects(name) on delete cascade on update cascade,foreign key (project, jobset) references Jobsets(project, name) on delete cascade on update cascade
foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade
foreign key (project, jobset) references Jobsets(project, name) on update cascade
foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade
foreign key (project, jobset) references Jobsets(project, name) on update cascade
foreign key (project, jobset) references Jobsets(project, name) on update cascade on delete cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade on delete cascade
foreign key (project, jobset) references Jobsets(project, name) on update cascade on delete cascade
alter table Builds drop constraint builds_project_fkey2;alter table BuildMetrics drop constraint buildmetrics_project_fkey2;alter table StarredJobs drop constraint starredjobs_project_fkey2;drop table Jobs;
my $expected = $build->job->name eq "fails" ? 1 : $build->job->name =~ /with_failed/ ? 6 : 0;ok($newbuild->finished == 1 && $newbuild->buildstatus == $expected, "Build '".$build->job->name."' from jobs/basic.nix should have buildstatus $expected");
my $expected = $build->job eq "fails" ? 1 : $build->job =~ /with_failed/ ? 6 : 0;ok($newbuild->finished == 1 && $newbuild->buildstatus == $expected, "Build '".$build->job."' from jobs/basic.nix should have buildstatus $expected");
ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job->name."' from jobs/basic.nix should have buildstatus 0");
ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job."' from jobs/basic.nix should have buildstatus 0");
ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job->name."' from jobs/basic.nix should have buildstatus 0");
ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job."' from jobs/basic.nix should have buildstatus 0");
ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job->name."' from jobs/build-products.nix should have buildstatus 0");
ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job."' from jobs/build-products.nix should have buildstatus 0");