Remove the Jobs table
[?]
May 27, 2020, 6:09 PM
NZXX6PLDWEDQHXFF5JCZWGB22VA3WSDYLX65K6BQ5GNWPOE43N7QCDependencies
- [2]
OYBPENNMPostgresql 8.x needs as for column. - [3]
CJRWFVKZAdd a ‘latest-finished’ action - [4]
LSNBPB3ZFix tabs - [5]
IP5MOFDGAlso redirect /job requests that refer to a renamed jobset - [6]
PMTIAQEPBuild page: Show output / closure sizes - [7]
PDZXZZPZShut up some Perl 5.20 warnings - [8]
JOST7ANVSort metrics by name - [9]
46RR7WQCAdd link to metrics - [10]
5BXLRZPMjob prometheus endpoint: d'oh - [11]
X5W5PGGMBuilds: populate Builds.jobset_id in hydra-eval-jobset - [12]
PNR4DR6OJobs.builds: Fetch via Jobs.jobset_id - [13]
VB6DJ5R4Fix reproduction instructions - [14]
LPPZS34YMerge remote-tracking branch 'origin/master' into flake - [15]
N74SRHS6Remove the "releases" feature - [16]
VGUFW62Fschema/Builds: use jobset_id instead of jobset name matches - [17]
DH3KNBAVMerge remote-tracking branch 'upstream/who-broke-builds' into upstream-master - [18]
MOX7XJ2EMerge the BuildSchedulingInfo table into the Builds table - [19]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [20]
WFJ3ZPRMadd tests for scm inputs - [21]
PF72JKWQAdd a "My jobs" tab to the dashboard - [22]
4JS4DWHDAll/recent builds -> Latest builds - [23]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [24]
D7PL2VWUMove more actions from the top bar - [25]
WUCOEIFASearch: Limit the number of results - [26]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [27]
SIDK2E7VJobs: add a nullable jobset_id foreign key to Jobsets. - [28]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [29]
NABL63FI* hydra: project members can do stuff that the owner can do - [30]
O5DYTVGAAdd jobset/job menus on buid log pages - [31]
G5YSUSNZIn build tables, hide the project, jobset and/or job name if they're constant - [32]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [33]
PZL3SZM3Give every page a consistent title - [34]
N22GPKYT* Put info about logs / build products in the DB. - [35]
53IMJNBBAdd isChannel column and meta attribute. - [36]
WGUKOIQZFix indentation - [37]
XKXMU5PVEllipsize long jobset/job names to prevent bootstrap navbar breakage - [38]
JAUTUNGIbug fix - [39]
3LEGFJFP"Reproduce" action: Support flakes - [40]
K3HODXGHCheck all inputs for blame but only email selected inputs - [41]
SJPEC375Builds: add a nullable jobset_id foreign key to Jobsets. - [42]
W4G5MZZShydra-evaluator improvements - [43]
SMCOU72Fhydra: add some admin for adding/enabling/etc build machines - [44]
GK326R5NSearch: Don't return hidden projects/jobsets - [45]
WE5Q2NVIAllow build to be bumped to the front of the queue via the web interface - [46]
7X2VKCAMReorder - [47]
E7M2WP7ARemove unused Jobs columns - [48]
S66BOMVU* Added authentication. - [49]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [50]
ZB3JV52WAdd a "My jobsets" tab to the dashboard - [51]
EVYSAFB2Transpose the aggregate constituents table - [52]
FAIJDQKZ - [53]
LCLXI7PTSearch: Mark disabled projects/jobsets/jobs - [54]
7VQ4ALFYUpdate "make check" for the new queue runner - [55]
ICRGXEPIBuilds.jobset_id: make not-null - [56]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [57]
KPZNJ33U* In views, support selecting a job that doesn't depend on the - [58]
4D4U5IPY* Allow jobsets to be disabled. - [59]
AHTEIK7G* Added a maintainers field to the Builds table. - [60]
MMBKNEQBLatestSucceededForJob{,set}: Filter with jobset_id - [61]
CCIORPJ5When manually scheduling an eval, force re-instantiation of store derivations - [62]
KXGOUX7P* Creating releases. - [63]
YAPITGB3* Boolean inputs. - [64]
TX7Q4RASAdd page showing latest build steps - [65]
US27ZTX5* HydraFrontend -> Hydra. - [66]
KSBB33REAdd a dashboard - [67]
Q5HZWFCYAdd support for darcs repositories. - [68]
QLOLZHRXAllow a per-jobset check interval - [69]
CLJQCY2X* Store info about all the build actions and allow them to be - [70]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [71]
CMU3YKOU* Store the release name. - [72]
XJRJ4J7MAdd user registration - [73]
J5UVLXOK* Start of a basic Catalyst web interface. - [74]
NQPGIRXXRevert "hydra-eval-jobs -> nix eval-hydra-jobs" - [75]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [76]
S5NPXZG3Fix indentation - [77]
Q6VFUIC6Remove hydra-eval-guile-jobs - [78]
FYO6NECEhydra - [79]
CQTN62OHDie tabs die - [80]
PCD3ZH6ZPartially revert 1c20cfdf2403feb78cef515faf15c04d5c9f17bd - [81]
2YXO5ZGQHydra/28: Rename "scheduler" to "evaluator" - [82]
3HCBU2FA - [83]
ZWCTAZGLadded newsitems, added some admin options to clear various caches. - [84]
RAQUW45KRemove per-platform links from the job page - [85]
2QISRMJKJob page: show queued as well as running builds - [86]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [87]
CUFVKLLARemove Hydra::Helper::nix::txn_do from the Perl code - [88]
PCKLFRT5Support push notification of repository changes - [89]
MWXDVTS3Copy the flake migration from the flake branch - [90]
HTDANBLNMerge pull request #730 from NixOS/flake - [91]
5O6E5SU5hydra: store logfile/output path/closure size - [92]
B7ENVLRShydra-queue-runner: Make build notification more reliable - [93]
2R7GHSA4* hydra: added initial version of build graph - [94]
QL55ECJ6- adapted ui for hydra, more in line with nixos.org website - [95]
KAZWI5G4* hydra: buildpage, show changes since last build/successful build - [96]
HPEG2RHVMerge the BuildResultInfo table into the Builds table - [97]
2GUAKGTBFix indentation of build.tt - [98]
BQHDSG6OMerge remote-tracking branch 'origin/master' into flake - [99]
Y6AHH4THRemove the logfile and logSize columns from the database - [100]
PY5GVGC7Implemented quoted strings support in hydra-build-products to allow file names with spaces + testcase - [101]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [102]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [103]
FTPCV25MStore aggregate members in the database - [104]
SB2V735VKeep track of the database schema version - [105]
CHXKOIO7Fix typo. - [106]
TM6C352UEnsure that stoptime and starttime are set for finished builds - [107]
AZCCANUBMissing part of aaacf9eda36f5cdcc77cec20d6f49fbb6f925105 - [108]
6HWIUOSUAvoid fetching Projects/Jobsets just to get the name column - [109]
W5OAZWPDDrop the errorMsg column in the Jobs table - [110]
PHX2HIVG* Store info about the build inputs in the build record. - [111]
L2E6EVE2* Merged the Build and Job tables. - [112]
ZEHSSVFG - [113]
YU6CND7CRemove support for views - [114]
INJAHTMFFix metric alignment - [115]
RPTSGIRCEliminate duplicate getPreviousBuild functions - [116]
777XFGVYHydra/22: on job page, 'finished builds' shows nothing for old (non-current) jobs - [117]
5ZRYT2YEJobs.jobset_id: make not-null - [118]
3HZY24CX* Make jobsets viewable under - [119]
C4RV47LW - [120]
ZHBEOOUQshow evaluation errors in log of tests - [121]
IGR322YPsql: Generate models from postgresql - [122]
PHJF4FUTAdd missing files - [123]
TQKGQ5R3 - [124]
RYTQLATYKeep track of failed paths in the Hydra database - [125]
S6OISBQ3* Mark the "current" builds in a jobset, i.e. those corresponding to - [126]
SS4TZXNUDistinguish between permanent evaluation errors and transient input errors - [127]
FZR7ET5DJobsets: add a SERIAL, unique, non-null id column - [128]
3ZCEPLNO - [129]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [130]
UICHT2PSAdd a search feature - [131]
IT5AXPY2Disable channels on binary cached based Hydra instances - [132]
UWVMQIAC* Refactoring. - [133]
BB2KXLXZMove the build time chart to the job page - [134]
JTRG7RDQadd support for git as jobinput - [135]
R2PON6R7Allow non-admin users to see the machine status page - [136]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [137]
LZVO64YGMerge in the first bits of the API work - [138]
26PYNDXVRemove the errorMsg column from the Builds table - [139]
YTSIRIMK* Separate job status and all builds pages. - [140]
NRSKJPP4makeLink -> menuItem - [141]
QKG63Y2ZFix latest-finished - [142]
JTHWA6AMRename aggregate members to constituents - [143]
D3DIBMOK* For products that are directories (like manuals), allow a default - [144]
KN3VYE5P* Cleaned up the foreign key constraints. - [145]
R6B5CAFFLet Builds.timestamp refer to the time the build was added - [146]
N4ODPYP7Job page: Remove channel tab - [147]
BVOPAMLS - [148]
LU64AZJShydra-eval-jobset: Pass --no-allow-import-from-derivation - [149]
ITJWNQEZUpdate Hydra schema, otherwise hydra-notify will not work. - [150]
G2WXEQHERemove the Errors page - [151]
KOTB7BKV - [152]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [153]
YTZOC7C5* Editing of jobset inputs. - [154]
ZPHREC7Xhydra-eval-jobset: Support flakes - [155]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [156]
P5X4P6VK* Renaming "release sets" to "views" (not finished yet). Having - [157]
36M6DGITShow the runtime/build dependencies in the build page - [158]
DHMTPGST* Ran update-dbix. - [159]
JIJDYWPYRemove the Build menu from the top bar - [160]
RGGC557Ojob prometheus endpoint: drop nixname, too variable - [161]
X27GNHDV* Basic job info in the database. - [162]
T5BIOVJEAdd support for tracking custom metrics - [163]
G2T4WAHIStore the inputs of each evaluation in the database - [164]
S5PV6IIM* Represent jobs explicitly in the DB. - [165]
KQAQ4FIFUpdate Schema classes - [166]
H7CNGK4O* Log evaluation errors etc. in the DB. - [167]
RFE6T5LG* Store jobset evaluations in the database explicitly. This includes - [168]
4S5JF5JPUse latest DBIx::Class::Schema::Loader - [169]
SHBLLAVH* More global substitution. - [170]
JM3DPYOMgenerated schema with new dbix class schema loader, grrrrrr - [171]
B72GLND4 - [172]
XAJFR6SRAdd a chart to the job pages showing the closure size over time - [173]
FAUCW4NHRemove project/jobset/job/build id from the navbar - [174]
ZI535LI6* hydra: 'new' UI for project/jobset/job/build - [175]
TPNHTE5VRemove obsolete Builds columns and provide accurate "Running builds" - [176]
QUMWPGCUAdd flake configuration to the web interface - [177]
SW7STLQ7Cache flake-based jobset evaluations - [178]
VU2OLHD2Move most of AddBuilds to hydra-eval-jobset - [179]
D5QIOJGP* Move everything up one directory. - [180]
E7FID72SRemove the BuildMachines and BuildMachinesSystemTypes tables - [181]
R5D7DZPE - [182]
PMNWRTGJAdd multiple output support - [183]
FANTYCR7Materialize the number of finished builds - [184]
6GZZDDQBMove the store path size chart to the job page - [185]
JJT5QG3Kremove revision from cached cvs inputs, and added missing files - [186]
3VRZBVFXhydra-eval-jobs -> nix eval-hydra-jobs - [187]
QQ4STW3Smissing file - [188]
TLZ2SPBR - [189]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [190]
3PNG7NIBRemove trailing whitespace - [191]
HHWCS3QQJobs: populate Jobs.jobset_id field when writing from hydra-eval-jobset - [192]
BXHG3HYLWhen renaming a jobset, add a redirect from the old name - [193]
YTIDBFGUDrop unused "disabled" columns - [194]
UDS5VIT6Lazy load the metrics tab - [195]
WYMEG4VPMake some more tables clickable - [196]
37R34XJO* Negative caching: don't perform a build if a dependency already - [197]
MESO2HDVRemove obsolete JobStatus source - [198]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [199]
P3M6UFMPMerge remote-tracking branch 'origin/master' into flake - [200]
SBKX3YH2cleanup - [201]
EJ7C77C3Allow searching for store and drv paths. Only does a complete match to reduce load on database. - [202]
LMTJWY44hydra-eval-jobset: $firstOutput is not used so can be removed - [203]
FD76WVTQmissing file - [204]
ZVTSOVHN* Support Subversion checkouts. - [205]
HRAFVVOEmake logo configurable via HYDRA_LOGO env var - [206]
5GRW5XU4Job page: Put latest builds on top - [207]
OEPUOUNBUsing twitter bootstrap for more consistent looks for Hydra - [208]
LFZQIVPXRemove more dead code - [209]
C3AG65SWAdd one-shot jobsets - [210]
4HPT4SDDRevert "Remove now-unused SystemTypes table" - [211]
6WRGCITDEnable declarative projects. - [212]
7ECJWNVXCleanup Project model - [213]
RBZRCTALhydra: fixed and re-enabled evaluation tests - [214]
NQJFHYBIjob: create a prometheus endpoint - [215]
GJFYEU3S* Nix now stores logs by default as bzip2, make sure the build page uncompresses before showing. - [216]
JD7AWXQGRemove now-unused SystemTypes table - [217]
CQQSJLONOn aggregate job pages, show a matrix showing all the constituent builds - [218]
GEADFVZ5hydra-queue-runner: Improved scheduling - [219]
RI4S7SYT* Job status: show the active jobs. - [220]
5SHCWE7X* Prevent repeated evaluation of a jobset with the same inputs. This - [221]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [222]
IK53RV4V - [223]
4CELXP7PRemove the longDescription field - [224]
JPTXSWBOShow whether a job still exists - [*]
LBNVQXUB* Build the /build stuff in a separate controller. - [*]
HX4QYOYAadd first evaluations tests
Change contents
- replacement in src/lib/Hydra/Controller/Build.pm at line 89
, job => $c->stash->{job}->name, job => $c->stash->{job} - replacement in src/lib/Hydra/Controller/Job.pm at line 27[5.598]→[5.598:675](∅→∅),[5.675]→[17.176:311](∅→∅),[17.803]→[17.176:311](∅→∅),[17.176]→[17.176:311](∅→∅)
$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; - edit in src/lib/Hydra/Controller/Job.pm at line 33
my $job = $c->stash->{job}; - replacement in src/lib/Hydra/Controller/Job.pm at line 35
my $lastBuild = $job->builds->find({ finished => 1 },my $lastBuild = $c->stash->{jobset}->builds->find({ job => $c->stash->{job}, finished => 1 }, - replacement in src/lib/Hydra/Controller/Job.pm at line 47
$c->stash->{job}->name,$c->stash->{job}, - replacement in src/lib/Hydra/Controller/Job.pm at line 57
$c->stash->{job}->name,$c->stash->{job}, - edit in src/lib/Hydra/Controller/Job.pm at line 66
my $job = $c->stash->{job}; - replacement in src/lib/Hydra/Controller/Job.pm at line 70
[ $job->builds->search({ finished => 1 },[ $c->stash->{jobset}->builds->search({ job => $c->stash->{job}, finished => 1 }, - replacement in src/lib/Hydra/Controller/Job.pm at line 74
$job->builds->search({ finished => 0 },$c->stash->{jobset}->builds->search({ job => $c->stash->{job}, finished => 0 }, - replacement in src/lib/Hydra/Controller/Job.pm at line 81
{ 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 } }, - replacement in src/lib/Hydra/Controller/Job.pm at line 91
my $jobName = $b->get_column('job');$aggregates->{$b->get_column('aggregate')}->{constituents}->{$jobName} =$aggregates->{$b->get_column('aggregate')}->{constituents}->{$b->job} = - replacement in src/lib/Hydra/Controller/Job.pm at line 93
$constituentJobs{$jobName} = 1;$constituentJobs{$b->job} = 1; - replacement in src/lib/Hydra/Controller/Job.pm at line 108
, job => $c->stash->{job}->name, job => $c->stash->{job} - edit in src/lib/Hydra/Controller/Job.pm at line 115
my $job = $c->stash->{job}; - replacement in src/lib/Hydra/Controller/Job.pm at line 116
$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", }) ]; - replacement in src/lib/Hydra/Controller/Job.pm at line 123
my @res = $c->stash->{job}->builds->search({ finished => 1, buildstatus => 0, closuresize => { '!=', 0 } },my @res = $c->stash->{jobset}->builds->search({ job => $c->stash->{job}, finished => 1, buildstatus => 0, closuresize => { '!=', 0 } }, - replacement in src/lib/Hydra/Controller/Job.pm at line 135
my @res = $c->stash->{job}->builds->search({ finished => 1, buildstatus => 0, closuresize => { '!=', 0 } },my @res = $c->stash->{jobset}->builds->search({ job => $c->stash->{job}, finished => 1, buildstatus => 0, closuresize => { '!=', 0 } }, - replacement in src/lib/Hydra/Controller/Job.pm at line 144
my @res = $c->stash->{job}->builds->search({ finished => 1, buildstatus => 0, size => { '!=', 0 } },my @res = $c->stash->{jobset}->builds->search({ job => $c->stash->{job}, finished => 1, buildstatus => 0, size => { '!=', 0 } }, - replacement in src/lib/Hydra/Controller/Job.pm at line 157
my @res = $c->stash->{job}->buildmetrics->search({ name => $metricName },my @res = $c->stash->{jobset}->buildmetrics->search({ job => $c->stash->{job}, name => $metricName }, - replacement in src/lib/Hydra/Controller/Job.pm at line 168
$c->stash->{allBuilds} = $c->stash->{job}->builds;$c->stash->{allBuilds} = $c->stash->{jobset}->builds->search({ job => $c->stash->{job} }); - replacement in src/lib/Hydra/Controller/Job.pm at line 170
->search({}, {bind => [$c->stash->{jobset}->id, $c->stash->{job}->name]});->search({}, {bind => [$c->stash->{jobset}->id, $c->stash->{job}]}); - replacement in src/lib/Hydra/Controller/Job.pm at line 172
$c->stash->{project}->name . "-" . $c->stash->{jobset}->name . "-" . $c->stash->{job}->name;$c->stash->{project}->name . "-" . $c->stash->{jobset}->name . "-" . $c->stash->{job}; - replacement in src/lib/Hydra/Controller/Job.pm at line 183
, job => $c->stash->{job}->name, job => $c->stash->{job} - replacement in src/lib/Hydra/Controller/Root.pm at line 462
$c->stash->{jobs} = [ $c->model('DB::Jobs')->search({ "me.name" => { ilike => "%$query%" }$c->stash->{jobs} = [ $c->model('DB::Builds')->search({ "job" => { ilike => "%$query%" } - edit in src/lib/Hydra/Controller/Root.pm at line 466
, iscurrent => 1 - replacement in src/lib/Hydra/Controller/Root.pm at line 468[17.619]→[17.0:100](∅→∅),[17.100]→[2.0:210](∅→∅),[2.210]→[17.307:338](∅→∅),[17.307]→[17.307:338](∅→∅)
{ 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"] - replacement in src/lib/Hydra/Controller/Root.pm at line 470
} ) ];} )]; - replacement in src/lib/Hydra/Controller/User.pm at line 342
my @builds = $j->job->builds->search({ },my @builds = $j->jobset->builds->search({ job => $j->job }, - replacement in src/lib/Hydra/Controller/User.pm at line 345
push @{$c->stash->{starredJobs}}, { job => $j->job, builds => [@builds] };push @{$c->stash->{starredJobs}}, { job => $j, builds => [@builds] }; - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 49
return $build->job->builds->search(return $build->jobset->builds->search( - file deletion: Jobs.pm
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 - edit in src/lib/Hydra/Schema/BuildMetrics.pm at line 74
is_foreign_key: 1 - replacement in src/lib/Hydra/Schema/BuildMetrics.pm at line 97
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },{ data_type => "text", is_nullable => 0 }, - edit in src/lib/Hydra/Schema/BuildMetrics.pm at line 131
);=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" }, - replacement in src/lib/Hydra/Schema/BuildMetrics.pm at line 164
# 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 - edit in src/lib/Hydra/Schema/Builds.pm at line 76
is_foreign_key: 1 - replacement in src/lib/Hydra/Schema/Builds.pm at line 226
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },{ data_type => "text", is_nullable => 0 }, - edit in src/lib/Hydra/Schema/Builds.pm at line 439[17.244]→[17.244:248](∅→∅),[17.248]→[17.10124:10135](∅→∅),[17.9476]→[17.10124:10135](∅→∅),[17.10135]→[17.9502:9503](∅→∅),[17.9502]→[17.9502:9503](∅→∅),[17.9503]→[17.10136:10153](∅→∅),[17.10153]→[17.9518:9519](∅→∅),[17.9518]→[17.9518:9519](∅→∅),[17.9519]→[17.10154:10193](∅→∅),[17.10193]→[17.9565:9572](∅→∅),[17.9565]→[17.9565:9572](∅→∅),[17.9572]→[17.10194:10316](∅→∅),[17.10316]→[17.3077:3153](∅→∅)
);=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" }, - replacement in src/lib/Hydra/Schema/Builds.pm at line 545
# 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 - replacement in src/lib/Hydra/Schema/JobsetEvals.pm at line 204
# 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 - edit in src/lib/Hydra/Schema/Jobsets.pm at line 292[17.2717]→[17.643:683](∅→∅),[17.683]→[17.19391:19392](∅→∅),[17.2717]→[17.19391:19392](∅→∅),[17.19392]→[17.684:723](∅→∅)
=head2 jobs_jobset_idsType: has_manyRelated object: L<Hydra::Schema::Jobs> - edit in src/lib/Hydra/Schema/Jobsets.pm at line 293[17.724]→[17.724:880](∅→∅),[17.880]→[17.19404:19467](∅→∅),[17.19404]→[17.19404:19467](∅→∅),[17.19467]→[17.2717:2740](∅→∅),[17.2717]→[17.2717:2740](∅→∅),[17.2740]→[17.881:907](∅→∅),[17.907]→[17.2750:2863](∅→∅),[17.2750]→[17.2750:2863](∅→∅),[17.2863]→[17.5763:5772](∅→∅),[17.5772]→[17.2863:2866](∅→∅),[17.21807]→[17.2863:2866](∅→∅),[17.2863]→[17.2863:2866](∅→∅),[17.2866]→[17.19468:19469](∅→∅)
=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,); - replacement in src/lib/Hydra/Schema/Jobsets.pm at line 378
# 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 - edit in src/lib/Hydra/Schema/Projects.pm at line 159[17.4371]→[17.20640:20641](∅→∅),[17.20640]→[17.20640:20641](∅→∅),[17.20641]→[17.24583:24595](∅→∅),[17.24595]→[17.20656:20673](∅→∅),[17.20656]→[17.20656:20673](∅→∅),[17.20673]→[17.24596:24635](∅→∅)
=head2 jobsType: has_manyRelated object: L<Hydra::Schema::Jobs> - edit in src/lib/Hydra/Schema/Projects.pm at line 160[17.20716]→[17.20716:20722](∅→∅),[17.2395]→[17.2317:2340](∅→∅),[17.20722]→[17.2317:2340](∅→∅),[17.2317]→[17.2317:2340](∅→∅),[17.2340]→[17.24636:24671](∅→∅),[17.24671]→[17.4695:4735](∅→∅),[17.3585]→[17.4695:4735](∅→∅),[17.4735]→[17.6895:6904](∅→∅),[17.6904]→[17.4735:4738](∅→∅),[17.24678]→[17.4735:4738](∅→∅),[17.4735]→[17.4735:4738](∅→∅),[17.4738]→[17.20723:20724](∅→∅)
=cut__PACKAGE__->has_many("jobs","Hydra::Schema::Jobs",{ "foreign.project" => "self.name" },undef,); - replacement in src/lib/Hydra/Schema/Projects.pm at line 261
# 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 - edit in src/lib/Hydra/Schema/StarredJobs.pm at line 59
is_foreign_key: 1 - replacement in src/lib/Hydra/Schema/StarredJobs.pm at line 71
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },{ data_type => "text", is_nullable => 0 }, - edit in src/lib/Hydra/Schema/StarredJobs.pm at line 93
=head2 jobType: belongs_toRelated object: L<Hydra::Schema::Jobs>=cut - edit in src/lib/Hydra/Schema/StarredJobs.pm at line 94
__PACKAGE__->belongs_to("job","Hydra::Schema::Jobs",{ jobset => "jobset", name => "job", project => "project" },{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },); - replacement in src/lib/Hydra/Schema/StarredJobs.pm at line 140
# 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 - replacement in src/lib/Hydra/View/TT.pm at line 40
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; - replacement in src/root/all.tt at line 2
(job ? " for job $project.name:$jobset.name:$job.name" :(job ? " for job $project.name:$jobset.name:$job" : - replacement in src/root/build.tt at line 1
[% WRAPPER layout.tt title="Build $id of job $project.name:$jobset.name:$job.name" %][% WRAPPER layout.tt title="Build $id of job $project.name:$jobset.name:$job" %] - replacement in src/root/build.tt at line 261
[% INCLUDE renderProductList latestRoot=['/job' build.project.name build.jobset.name build.job.name 'latest'] %][% INCLUDE renderProductList latestRoot=['/job' build.project.name build.jobset.name build.job 'latest'] %] - replacement in src/root/build.tt at line 387
[% chartsURL = c.uri_for('/job' build.project.name build.jobset.name build.job.name) _ "#tabs-charts" %][% chartsURL = c.uri_for('/job' build.project.name build.jobset.name build.job) _ "#tabs-charts" %] - replacement in src/root/build.tt at line 428
<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> - replacement in src/root/build.tt at line 510
<span class="shell-prompt"># </span>nix build [% HTML.escape(eval.flake) %]#hydraJobs.[% HTML.escape(job.name) %]<span class="shell-prompt"># </span>nix build [% HTML.escape(eval.flake) %]#hydraJobs.[% HTML.escape(job) %] - replacement in src/root/dashboard.tt at line 25
<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> - replacement in src/root/job-metrics-tab.tt at line 7
[% INCLUDE createChart id="build-times" yaxis="sec" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'build-times') %][% INCLUDE createChart id="build-times" yaxis="sec" dataUrl=c.uri_for('/job' project.name jobset.name job 'build-times') %] - replacement in src/root/job-metrics-tab.tt at line 11
[% 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') %] - replacement in src/root/job-metrics-tab.tt at line 15
[% INCLUDE createChart id="output-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'output-sizes') %][% INCLUDE createChart id="output-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job 'output-sizes') %] - replacement in src/root/job-metrics-tab.tt at line 19
<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> - replacement in src/root/job-metrics-tab.tt at line 23
INCLUDE createChart dataUrl=c.uri_for('/job' project.name jobset.name job.name 'metric' metric.name); %]INCLUDE createChart dataUrl=c.uri_for('/job' project.name jobset.name job 'metric' metric.name); %] - replacement in src/root/job.tt at line 2
title="Job $project.name:$jobset.name:$job.name"title="Job $project.name:$jobset.name:$job" - replacement in src/root/job.tt at line 10
[% IF !jobExists(job) %][% IF !jobExists(jobset, job) %] - replacement in src/root/job.tt at line 32
linkToAll=c.uri_for('/job' project.name jobset.name job.name 'all') %]linkToAll=c.uri_for('/job' project.name jobset.name job 'all') %] - replacement in src/root/job.tt at line 87
[% INCLUDE makeLazyTab tabName="tabs-charts" uri=c.uri_for('/job' project.name jobset.name job.name 'metrics-tab') %][% INCLUDE makeLazyTab tabName="tabs-charts" uri=c.uri_for('/job' project.name jobset.name job 'metrics-tab') %] - replacement in src/root/job.tt at line 91
<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> - replacement in src/root/search.tt at line 70
<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> - replacement in src/root/topbar.tt at line 68
<li class="nav-header">[% HTML.escape(job.name) %]</li><li class="nav-header">[% HTML.escape(job) %]</li> - replacement in src/root/topbar.tt at line 71
uri = c.uri_for(c.controller('Job').action_for('overview'), [project.name, jobset.name, job.name])uri = c.uri_for(c.controller('Job').action_for('overview'), [project.name, jobset.name, job]) - replacement in src/root/topbar.tt at line 74
uri = c.uri_for(c.controller('Job').action_for('all'), [project.name, jobset.name, job.name])uri = c.uri_for(c.controller('Job').action_for('all'), [project.name, jobset.name, job]) - replacement in src/root/topbar.tt at line 76
[% INCLUDE menuItem uri = c.uri_for('/job' project.name jobset.name job.name 'channel' 'latest') title = "Channel" %][% INCLUDE menuItem uri = c.uri_for('/job' project.name jobset.name job 'channel' 'latest') title = "Channel" %] - edit in src/script/hydra-eval-jobset at line 350
- edit in src/script/hydra-eval-jobset at line 405[17.1110]→[17.0:210](∅→∅),[17.13396]→[17.0:210](∅→∅),[17.210]→[17.13469:13470](∅→∅),[17.13469]→[17.13469:13470](∅→∅)
my $job = $jobset->jobs->update_or_create({name => $jobName,jobset_id => $jobset->id,project => $jobset->project,jobset => $jobset->name,}); - replacement in src/script/hydra-eval-jobset at line 448
$build = $job->builds->create($build = $jobset->builds->create( - edit in src/script/hydra-eval-jobset at line 453
, job => $jobName - edit in src/sql/hydra.sql at line 134[17.6811]→[17.6811:6902](∅→∅),[17.6902]→[17.308:344](∅→∅),[17.344]→[17.6902:6935](∅→∅),[17.1317]→[17.6902:6935](∅→∅),[17.6902]→[17.6902:6935](∅→∅),[17.7063]→[17.7063:7064](∅→∅),[17.7273]→[17.7273:7316](∅→∅),[17.7316]→[17.1318:1390](∅→∅),[17.1390]→[17.7316:7513](∅→∅),[17.7316]→[17.7316:7513](∅→∅)
);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 - replacement in src/sql/hydra.sql at line 216
foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascadeforeign key (project, jobset) references Jobsets(project, name) on update cascade - replacement in src/sql/hydra.sql at line 360
foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascadeforeign key (project, jobset) references Jobsets(project, name) on update cascade - replacement in src/sql/hydra.sql at line 533
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 cascadeforeign key (project, jobset) references Jobsets(project, name) on update cascade on delete cascade - edit in src/sql/update-dbix.pl at line 25
"jobs" => "Jobs", - file addition: upgrade-67.sql[17.3004]
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; - replacement in tests/evaluation-tests.pl at line 28
ok(runBuild($build), "Build '".$build->job->name."' from jobs/basic.nix should exit with code 0");ok(runBuild($build), "Build '".$build->job."' from jobs/basic.nix should exit with code 0"); - replacement in tests/evaluation-tests.pl at line 30
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"); - replacement in tests/evaluation-tests.pl at line 40
ok(runBuild($build), "Build '".$build->job->name."' from jobs/basic.nix should exit with code 0");ok(runBuild($build), "Build '".$build->job."' from jobs/basic.nix should exit with code 0"); - replacement in tests/evaluation-tests.pl at line 42
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"); - replacement in tests/evaluation-tests.pl at line 48
ok(runBuild($build), "Build '".$build->job->name."' from jobs/basic.nix should exit with code 0");ok(runBuild($build), "Build '".$build->job."' from jobs/basic.nix should exit with code 0"); - replacement in tests/evaluation-tests.pl at line 50
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"); - replacement in tests/evaluation-tests.pl at line 161
ok(runBuild($build), "Build '".$build->job->name."' from jobs/build-products.nix should exit with code 0");ok(runBuild($build), "Build '".$build->job."' from jobs/build-products.nix should exit with code 0"); - replacement in tests/evaluation-tests.pl at line 163
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"); - replacement in tests/evaluation-tests.pl at line 167
if($build->job->name eq "simple") {if($build->job eq "simple") { - replacement in tests/evaluation-tests.pl at line 170
} elsif ($build->job->name eq "with_spaces") {} elsif ($build->job eq "with_spaces") {