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]
CMU3YKOU* Store the release name. - [18]
JPTXSWBOShow whether a job still exists - [19]
QKG63Y2ZFix latest-finished - [20]
N22GPKYT* Put info about logs / build products in the DB. - [21]
3VRZBVFXhydra-eval-jobs -> nix eval-hydra-jobs - [22]
EVYSAFB2Transpose the aggregate constituents table - [23]
CQTN62OHDie tabs die - [24]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [25]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [26]
7VQ4ALFYUpdate "make check" for the new queue runner - [27]
R6B5CAFFLet Builds.timestamp refer to the time the build was added - [28]
ZWCTAZGLadded newsitems, added some admin options to clear various caches. - [29]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [30]
SMCOU72Fhydra: add some admin for adding/enabling/etc build machines - [31]
6GZZDDQBMove the store path size chart to the job page - [32]
NABL63FI* hydra: project members can do stuff that the owner can do - [33]
X27GNHDV* Basic job info in the database. - [34]
YU6CND7CRemove support for views - [35]
JJT5QG3Kremove revision from cached cvs inputs, and added missing files - [36]
BQHDSG6OMerge remote-tracking branch 'origin/master' into flake - [37]
FD76WVTQmissing file - [38]
SBKX3YH2cleanup - [39]
CHXKOIO7Fix typo. - [40]
C4RV47LW - [41]
G5YSUSNZIn build tables, hide the project, jobset and/or job name if they're constant - [42]
WUCOEIFASearch: Limit the number of results - [43]
RI4S7SYT* Job status: show the active jobs. - [44]
ZB3JV52WAdd a "My jobsets" tab to the dashboard - [45]
HRAFVVOEmake logo configurable via HYDRA_LOGO env var - [46]
5SHCWE7X* Prevent repeated evaluation of a jobset with the same inputs. This - [47]
JD7AWXQGRemove now-unused SystemTypes table - [48]
S66BOMVU* Added authentication. - [49]
4D4U5IPY* Allow jobsets to be disabled. - [50]
HHWCS3QQJobs: populate Jobs.jobset_id field when writing from hydra-eval-jobset - [51]
KAZWI5G4* hydra: buildpage, show changes since last build/successful build - [52]
LZVO64YGMerge in the first bits of the API work - [53]
CCIORPJ5When manually scheduling an eval, force re-instantiation of store derivations - [54]
2GUAKGTBFix indentation of build.tt - [55]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [56]
Y6AHH4THRemove the logfile and logSize columns from the database - [57]
PCKLFRT5Support push notification of repository changes - [58]
T5BIOVJEAdd support for tracking custom metrics - [59]
HPEG2RHVMerge the BuildResultInfo table into the Builds table - [60]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [61]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [62]
ICRGXEPIBuilds.jobset_id: make not-null - [63]
SIDK2E7VJobs: add a nullable jobset_id foreign key to Jobsets. - [64]
QUMWPGCUAdd flake configuration to the web interface - [65]
CUFVKLLARemove Hydra::Helper::nix::txn_do from the Perl code - [66]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [67]
RFE6T5LG* Store jobset evaluations in the database explicitly. This includes - [68]
FTPCV25MStore aggregate members in the database - [69]
IT5AXPY2Disable channels on binary cached based Hydra instances - [70]
OEPUOUNBUsing twitter bootstrap for more consistent looks for Hydra - [71]
R2PON6R7Allow non-admin users to see the machine status page - [72]
YTIDBFGUDrop unused "disabled" columns - [73]
TQKGQ5R3 - [74]
P5X4P6VK* Renaming "release sets" to "views" (not finished yet). Having - [75]
DH3KNBAVMerge remote-tracking branch 'upstream/who-broke-builds' into upstream-master - [76]
HTDANBLNMerge pull request #730 from NixOS/flake - [77]
2YXO5ZGQHydra/28: Rename "scheduler" to "evaluator" - [78]
NRSKJPP4makeLink -> menuItem - [79]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [80]
S6OISBQ3* Mark the "current" builds in a jobset, i.e. those corresponding to - [81]
JIJDYWPYRemove the Build menu from the top bar - [82]
PHJF4FUTAdd missing files - [83]
2R7GHSA4* hydra: added initial version of build graph - [84]
5ZRYT2YEJobs.jobset_id: make not-null - [85]
MMBKNEQBLatestSucceededForJob{,set}: Filter with jobset_id - [86]
NQPGIRXXRevert "hydra-eval-jobs -> nix eval-hydra-jobs" - [87]
P3M6UFMPMerge remote-tracking branch 'origin/master' into flake - [88]
ZPHREC7Xhydra-eval-jobset: Support flakes - [89]
JAUTUNGIbug fix - [90]
IK53RV4V - [91]
RYTQLATYKeep track of failed paths in the Hydra database - [92]
IGR322YPsql: Generate models from postgresql - [93]
C3AG65SWAdd one-shot jobsets - [94]
AZCCANUBMissing part of aaacf9eda36f5cdcc77cec20d6f49fbb6f925105 - [95]
W5OAZWPDDrop the errorMsg column in the Jobs table - [96]
PCD3ZH6ZPartially revert 1c20cfdf2403feb78cef515faf15c04d5c9f17bd - [97]
YTZOC7C5* Editing of jobset inputs. - [98]
ZI535LI6* hydra: 'new' UI for project/jobset/job/build - [99]
6WRGCITDEnable declarative projects. - [100]
RPTSGIRCEliminate duplicate getPreviousBuild functions - [101]
NQJFHYBIjob: create a prometheus endpoint - [102]
TM6C352UEnsure that stoptime and starttime are set for finished builds - [103]
FANTYCR7Materialize the number of finished builds - [104]
KXGOUX7P* Creating releases. - [105]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [106]
777XFGVYHydra/22: on job page, 'finished builds' shows nothing for old (non-current) jobs - [107]
MESO2HDVRemove obsolete JobStatus source - [108]
PMNWRTGJAdd multiple output support - [109]
3PNG7NIBRemove trailing whitespace - [110]
KPZNJ33U* In views, support selecting a job that doesn't depend on the - [111]
XAJFR6SRAdd a chart to the job pages showing the closure size over time - [112]
3ZCEPLNO - [113]
7X2VKCAMReorder - [114]
BXHG3HYLWhen renaming a jobset, add a redirect from the old name - [115]
TPNHTE5VRemove obsolete Builds columns and provide accurate "Running builds" - [116]
XKXMU5PVEllipsize long jobset/job names to prevent bootstrap navbar breakage - [117]
WFJ3ZPRMadd tests for scm inputs - [118]
36M6DGITShow the runtime/build dependencies in the build page - [119]
L2E6EVE2* Merged the Build and Job tables. - [120]
EJ7C77C3Allow searching for store and drv paths. Only does a complete match to reduce load on database. - [121]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [122]
FAIJDQKZ - [123]
RAQUW45KRemove per-platform links from the job page - [124]
KSBB33REAdd a dashboard - [125]
7ECJWNVXCleanup Project model - [126]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [127]
FAUCW4NHRemove project/jobset/job/build id from the navbar - [128]
RBZRCTALhydra: fixed and re-enabled evaluation tests - [129]
WE5Q2NVIAllow build to be bumped to the front of the queue via the web interface - [130]
UDS5VIT6Lazy load the metrics tab - [131]
PF72JKWQAdd a "My jobs" tab to the dashboard - [132]
QQ4STW3Smissing file - [133]
JM3DPYOMgenerated schema with new dbix class schema loader, grrrrrr - [134]
G2WXEQHERemove the Errors page - [135]
VU2OLHD2Move most of AddBuilds to hydra-eval-jobset - [136]
CLJQCY2X* Store info about all the build actions and allow them to be - [137]
ZHBEOOUQshow evaluation errors in log of tests - [138]
4HPT4SDDRevert "Remove now-unused SystemTypes table" - [139]
ZEHSSVFG - [140]
WYMEG4VPMake some more tables clickable - [141]
B7ENVLRShydra-queue-runner: Make build notification more reliable - [142]
LMTJWY44hydra-eval-jobset: $firstOutput is not used so can be removed - [143]
CQQSJLONOn aggregate job pages, show a matrix showing all the constituent builds - [144]
37R34XJO* Negative caching: don't perform a build if a dependency already - [145]
BB2KXLXZMove the build time chart to the job page - [146]
SJN2QPWH* Big speed-up of the job status page and the channel generation (such - [147]
SHBLLAVH* More global substitution. - [148]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [149]
O5DYTVGAAdd jobset/job menus on buid log pages - [150]
ZVTSOVHN* Support Subversion checkouts. - [151]
D5QIOJGP* Move everything up one directory. - [152]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [153]
E7M2WP7ARemove unused Jobs columns - [154]
5O6E5SU5hydra: store logfile/output path/closure size - [155]
UWVMQIAC* Refactoring. - [156]
FYO6NECEhydra - [157]
QLOLZHRXAllow a per-jobset check interval - [158]
FZR7ET5DJobsets: add a SERIAL, unique, non-null id column - [159]
J5UVLXOK* Start of a basic Catalyst web interface. - [160]
WGUKOIQZFix indentation - [161]
KOTB7BKV - [162]
PY5GVGC7Implemented quoted strings support in hydra-build-products to allow file names with spaces + testcase - [163]
K3HODXGHCheck all inputs for blame but only email selected inputs - [164]
ITJWNQEZUpdate Hydra schema, otherwise hydra-notify will not work. - [165]
RGGC557Ojob prometheus endpoint: drop nixname, too variable - [166]
3LEGFJFP"Reproduce" action: Support flakes - [167]
LU64AZJShydra-eval-jobset: Pass --no-allow-import-from-derivation - [168]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [169]
UICHT2PSAdd a search feature - [170]
LFZQIVPXRemove more dead code - [171]
KQAQ4FIFUpdate Schema classes - [172]
XJRJ4J7MAdd user registration - [173]
MOX7XJ2EMerge the BuildSchedulingInfo table into the Builds table - [174]
G2T4WAHIStore the inputs of each evaluation in the database - [175]
4JS4DWHDAll/recent builds -> Latest builds - [176]
SJPEC375Builds: add a nullable jobset_id foreign key to Jobsets. - [177]
MWXDVTS3Copy the flake migration from the flake branch - [178]
QL55ECJ6- adapted ui for hydra, more in line with nixos.org website - [179]
GJFYEU3S* Nix now stores logs by default as bzip2, make sure the build page uncompresses before showing. - [180]
PZL3SZM3Give every page a consistent title - [181]
2QISRMJKJob page: show queued as well as running builds - [182]
53IMJNBBAdd isChannel column and meta attribute. - [183]
JTRG7RDQadd support for git as jobinput - [184]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [185]
LCLXI7PTSearch: Mark disabled projects/jobsets/jobs - [186]
D3DIBMOK* For products that are directories (like manuals), allow a default - [187]
H7CNGK4O* Log evaluation errors etc. in the DB. - [188]
GK326R5NSearch: Don't return hidden projects/jobsets - [189]
4CELXP7PRemove the longDescription field - [190]
3HCBU2FA - [191]
26PYNDXVRemove the errorMsg column from the Builds table - [192]
TX7Q4RASAdd page showing latest build steps - [193]
TLZ2SPBR - [194]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [195]
N4ODPYP7Job page: Remove channel tab - [196]
B72GLND4 - [197]
JTHWA6AMRename aggregate members to constituents - [198]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [199]
DHMTPGST* Ran update-dbix. - [200]
3HZY24CX* Make jobsets viewable under - [201]
R5D7DZPE - [202]
Q5HZWFCYAdd support for darcs repositories. - [203]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [204]
Q6VFUIC6Remove hydra-eval-guile-jobs - [205]
BVOPAMLS - [206]
YAPITGB3* Boolean inputs. - [207]
GEADFVZ5hydra-queue-runner: Improved scheduling - [208]
KN3VYE5P* Cleaned up the foreign key constraints. - [209]
D7PL2VWUMove more actions from the top bar - [210]
US27ZTX5* HydraFrontend -> Hydra. - [211]
W4G5MZZShydra-evaluator improvements - [212]
INJAHTMFFix metric alignment - [213]
PHX2HIVG* Store info about the build inputs in the build record. - [214]
S5PV6IIM* Represent jobs explicitly in the DB. - [215]
5GRW5XU4Job page: Put latest builds on top - [216]
S5NPXZG3Fix indentation - [217]
YTSIRIMK* Separate job status and all builds pages. - [218]
SW7STLQ7Cache flake-based jobset evaluations - [219]
SS4TZXNUDistinguish between permanent evaluation errors and transient input errors - [220]
4S5JF5JPUse latest DBIx::Class::Schema::Loader - [221]
6HWIUOSUAvoid fetching Projects/Jobsets just to get the name column - [222]
SB2V735VKeep track of the database schema version - [223]
E7FID72SRemove the BuildMachines and BuildMachinesSystemTypes tables - [224]
AHTEIK7G* Added a maintainers field to the Builds table. - [*]
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") {