This commit is contained in:
parent
6591118a2b
commit
cd06b6c97d
|
@ -29,7 +29,7 @@ sub getBuild {
|
||||||
sub index :Path :Args(0) {
|
sub index :Path :Args(0) {
|
||||||
my ( $self, $c ) = @_;
|
my ( $self, $c ) = @_;
|
||||||
$c->stash->{template} = 'index.tt';
|
$c->stash->{template} = 'index.tt';
|
||||||
$c->stash->{projects} = [$c->model('DB::Projects')->all];
|
$c->stash->{projects} = [$c->model('DB::Projects')->search({}, {order_by => 'displayname'})];
|
||||||
$c->stash->{scheduled} = [$c->model('DB::Builds')->search(
|
$c->stash->{scheduled} = [$c->model('DB::Builds')->search(
|
||||||
{finished => 0}, {join => 'schedulingInfo'})]; # !!!
|
{finished => 0}, {join => 'schedulingInfo'})]; # !!!
|
||||||
$c->stash->{allBuilds} = [$c->model('DB::Builds')->search(
|
$c->stash->{allBuilds} = [$c->model('DB::Builds')->search(
|
||||||
|
|
|
@ -8,8 +8,8 @@ use base 'DBIx::Class::Schema';
|
||||||
__PACKAGE__->load_classes;
|
__PACKAGE__->load_classes;
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ZbJ6NueGI5oUOzciArgKog
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UDG/z2SeOSq/K7iVpzF0mw
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -40,8 +40,8 @@ __PACKAGE__->belongs_to(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aad+idPUM0h/+J0Hl5SdIg
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fClAPzHpXV7YT8eHUeU4zw
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -21,8 +21,8 @@ __PACKAGE__->set_primary_key("build", "logphase");
|
||||||
__PACKAGE__->belongs_to("build", "HydraFrontend::Schema::Builds", { id => "build" });
|
__PACKAGE__->belongs_to("build", "HydraFrontend::Schema::Builds", { id => "build" });
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:o8osOyKf+9S5A87XexVOeA
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lW6yq7QOyzpa+zM/J/7VFQ
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -33,8 +33,8 @@ __PACKAGE__->set_primary_key("build", "productnr");
|
||||||
__PACKAGE__->belongs_to("build", "HydraFrontend::Schema::Builds", { id => "build" });
|
__PACKAGE__->belongs_to("build", "HydraFrontend::Schema::Builds", { id => "build" });
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:52RNu4OcP3buytGZs+cGZQ
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:2qyh04FF7LrOgo+/Ixap2A
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -25,8 +25,8 @@ __PACKAGE__->set_primary_key("id");
|
||||||
__PACKAGE__->belongs_to("id", "HydraFrontend::Schema::Builds", { id => "id" });
|
__PACKAGE__->belongs_to("id", "HydraFrontend::Schema::Builds", { id => "id" });
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+kbG4YYzbVVPWMwWTcQ32Q
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ko+bQKdwDzow15p/aTdgYw
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -79,8 +79,8 @@ __PACKAGE__->has_many(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:l4QUKDHPL1mEZSlO9GgGzw
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9VXVDomeYpjysKc8NxWogw
|
||||||
|
|
||||||
__PACKAGE__->has_many(dependents => 'HydraFrontend::Schema::Buildinputs', 'dependency');
|
__PACKAGE__->has_many(dependents => 'HydraFrontend::Schema::Buildinputs', 'dependency');
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ __PACKAGE__->set_primary_key("id");
|
||||||
__PACKAGE__->belongs_to("id", "HydraFrontend::Schema::Builds", { id => "id" });
|
__PACKAGE__->belongs_to("id", "HydraFrontend::Schema::Builds", { id => "id" });
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:EDzMzfQFnkl0bAmBlh5Omw
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:v2j9A4bXqe96Qy1zz/C+VQ
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -35,8 +35,8 @@ __PACKAGE__->set_primary_key("id", "stepnr");
|
||||||
__PACKAGE__->belongs_to("id", "HydraFrontend::Schema::Builds", { id => "id" });
|
__PACKAGE__->belongs_to("id", "HydraFrontend::Schema::Builds", { id => "id" });
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:T25Mdcg1A77BB4gFF3LPZA
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:tCirOuLYfhBxoEkH5HAQlQ
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -33,8 +33,8 @@ __PACKAGE__->belongs_to(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Qc9/eVs3wY6m9fztR3Yizg
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:GgHinSVpD7x20xFqfvau0Q
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -43,8 +43,8 @@ __PACKAGE__->has_many(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:V2RU7h0eTPBUES0G306AgA
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:F9AunJfDCrzuCOBHjNaurw
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -48,8 +48,8 @@ __PACKAGE__->has_many(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TMnJfLpgUhiMkJKB8I1qqQ
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oQnTi5ALlqDF0gP9P/hTeg
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -10,6 +10,10 @@ __PACKAGE__->table("Projects");
|
||||||
__PACKAGE__->add_columns(
|
__PACKAGE__->add_columns(
|
||||||
"name",
|
"name",
|
||||||
{ data_type => "text", is_nullable => 0, size => undef },
|
{ data_type => "text", is_nullable => 0, size => undef },
|
||||||
|
"displayname",
|
||||||
|
{ data_type => "text", is_nullable => 0, size => undef },
|
||||||
|
"description",
|
||||||
|
{ data_type => "VARCHAR", is_nullable => 0, size => undef },
|
||||||
);
|
);
|
||||||
__PACKAGE__->set_primary_key("name");
|
__PACKAGE__->set_primary_key("name");
|
||||||
__PACKAGE__->has_many(
|
__PACKAGE__->has_many(
|
||||||
|
@ -24,8 +28,8 @@ __PACKAGE__->has_many(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:06:06
|
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2008-11-13 00:41:19
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UEZU36sQSaNML/YCAtpGkg
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:z7XJulBG7643ilgAj1hDwg
|
||||||
|
|
||||||
|
|
||||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||||
|
|
|
@ -202,3 +202,90 @@ table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSo
|
||||||
table.tablesorter thead tr th {
|
table.tablesorter thead tr th {
|
||||||
padding-right: 1.5em;
|
padding-right: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Navbar */
|
||||||
|
|
||||||
|
#leftnavbar {
|
||||||
|
position: absolute;
|
||||||
|
left: 0px;
|
||||||
|
width: 13em;
|
||||||
|
border-right: 1px solid gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
position: absolute;
|
||||||
|
left: 13em;
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin-top: 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar ul {
|
||||||
|
display: block;
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar ul a {
|
||||||
|
color: #005aa0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar li.section {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar li.section > div.title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
border-width: 0px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #c0c0c0;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar li.section ul {
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
margin-left: 0em;
|
||||||
|
margin-right: 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar li.section ul li {
|
||||||
|
font-size: 90%;
|
||||||
|
list-style: none;
|
||||||
|
background-image: url(/static/images/arrow-right.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 0.3em center;
|
||||||
|
border-width: 0px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #c0c0c0;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
padding-top: 0.5em;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar li.section ul li.active {
|
||||||
|
background-image: url(/static/images/arrow-right-active.gif);
|
||||||
|
background-color: #eef2ff;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #606060;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftnavbar li.section ul li > div.title {
|
||||||
|
margin-left: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@
|
||||||
[% USE date %]
|
[% USE date %]
|
||||||
|
|
||||||
|
|
||||||
<h1>Queue</h1>
|
<h1>Hydra Overview</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Queue</h2>
|
||||||
|
|
||||||
[% IF scheduled.size == 0 %]
|
[% IF scheduled.size == 0 %]
|
||||||
|
|
||||||
|
@ -32,7 +35,7 @@
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
|
|
||||||
<h1>Job status</h1>
|
<h2>Job status</h2>
|
||||||
|
|
||||||
<p>Below are the latest builds for each job.</p>
|
<p>Below are the latest builds for each job.</p>
|
||||||
|
|
||||||
|
@ -48,7 +51,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<h1>All builds</h1>
|
<h2>All builds</h2>
|
||||||
|
|
||||||
<p>Number of builds: [% allBuilds.size %]</p>
|
<p>Number of builds: [% allBuilds.size %]</p>
|
||||||
|
|
||||||
|
@ -64,7 +67,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<h1>Projects</h1>
|
<h2>Projects</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
[% FOREACH project IN projects -%]
|
[% FOREACH project IN projects -%]
|
||||||
|
|
|
@ -21,14 +21,49 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="content">
|
<div id="container">
|
||||||
[% content %]
|
|
||||||
|
<div id="leftnavbar">
|
||||||
|
<ul>
|
||||||
|
<li class="section">
|
||||||
|
<div class="title">Hydra</div>
|
||||||
|
<ul>
|
||||||
|
<li><div class="title"><a href="/">Overview</a></div></li>
|
||||||
|
<li><div class="title"><a href="/queue">Queue</a></div></li>
|
||||||
|
<li><div class="title"><a href="/latest">Latest builds</a></div></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li class="section">
|
||||||
|
<div class="title">Projects</div>
|
||||||
|
<ul>
|
||||||
|
[% FOREACH project IN projects %]
|
||||||
|
<li><div class="title"><a href="[% c.uri_for('/project' project.name) %]">[% project.displayname %]</a></div></li>
|
||||||
|
[% END %]
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li class="section">
|
||||||
|
<div class="title">Admin</div>
|
||||||
|
<ul>
|
||||||
|
<li><div class="title"><a href="/">Users</a></div></li>
|
||||||
|
<li><div class="title"><a href="/">Release definitions</a></div></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div id="content">
|
||||||
|
[% content %]
|
||||||
|
<div id="footer">
|
||||||
<hr />
|
<hr />
|
||||||
Generated at [% date.format %].
|
Generated at [% date.format %].
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
BIN
src/HydraFrontend/root/static/images/arrow-right-active.gif
Normal file
BIN
src/HydraFrontend/root/static/images/arrow-right-active.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 103 B |
BIN
src/HydraFrontend/root/static/images/arrow-right.gif
Normal file
BIN
src/HydraFrontend/root/static/images/arrow-right.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 B |
|
@ -149,7 +149,9 @@ create trigger cascadeBuildDeletion
|
||||||
|
|
||||||
|
|
||||||
create table Projects (
|
create table Projects (
|
||||||
name text primary key not null
|
name text primary key not null, -- project id, lowercase (e.g. "patchelf")
|
||||||
|
displayName text not null, -- display name (e.g. "PatchELF")
|
||||||
|
description text
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
insert into projects(name) values('patchelf');
|
insert into projects(name, displayName, description) values('patchelf', 'PatchELF', 'A tool for modifying ELF binaries');
|
||||||
insert into jobSets(project, name, description, nixExprInput, nixExprPath) values('patchelf', 'trunk', 'PatchELF', 'patchelfSrc', 'release.nix');
|
insert into jobSets(project, name, description, nixExprInput, nixExprPath) values('patchelf', 'trunk', 'PatchELF', 'patchelfSrc', 'release.nix');
|
||||||
insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'patchelfSrc', 'path');
|
insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk', 'patchelfSrc', 'path');
|
||||||
insert into jobSetInputAlts(project, jobset, input, altnr, uri) values('patchelf', 'trunk', 'patchelfSrc', 0, '/home/eelco/Dev/patchelf-wc');
|
insert into jobSetInputAlts(project, jobset, input, altnr, uri) values('patchelf', 'trunk', 'patchelfSrc', 0, '/home/eelco/Dev/patchelf-wc');
|
||||||
|
@ -10,6 +10,10 @@ insert into jobSetInputs(project, jobset, name, type) values('patchelf', 'trunk'
|
||||||
insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'system', 0, 'i686-linux');
|
insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'system', 0, 'i686-linux');
|
||||||
insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'system', 1, 'x86_64-linux');
|
insert into jobSetInputAlts(project, jobset, input, altnr, value) values('patchelf', 'trunk', 'system', 1, 'x86_64-linux');
|
||||||
|
|
||||||
|
insert into projects(name, displayName, description) values('nix', 'Nix', 'The Nix package manager');
|
||||||
|
|
||||||
|
insert into projects(name, displayName, description) values('nixpkgs', 'Nixpkgs', 'The Nix Packages collection');
|
||||||
|
|
||||||
--insert into projects(name) values('nixpkgs');
|
--insert into projects(name) values('nixpkgs');
|
||||||
--insert into jobSets(project, name) values('nixpkgs', 'trunk');
|
--insert into jobSets(project, name) values('nixpkgs', 'trunk');
|
||||||
--insert into jobSets(project, name) values('nixpkgs', 'stdenv-branch');
|
--insert into jobSets(project, name) values('nixpkgs', 'stdenv-branch');
|
||||||
|
|
Loading…
Reference in a new issue