hydra/src/hydra.sql

151 lines
5.1 KiB
MySQL
Raw Normal View History

create table builds (
id integer primary key autoincrement not null,
timestamp integer not null, -- time this build was added to the db (in Unix time)
2008-11-04 18:23:28 +00:00
-- Info about the inputs.
project text not null, -- !!! foreign key
2008-11-10 10:18:50 +00:00
jobset text not null, -- !!! foreign key
2008-11-04 18:23:28 +00:00
attrName text not null,
-- Info about the build result.
description text,
drvPath text not null,
outPath text not null,
isCachedBuild integer not null, -- boolean
buildStatus integer, -- 0 = succeeded, 1 = Nix build failure, 2 = positive build failure
errorMsg text, -- error message in case of a Nix failure
startTime integer, -- in Unix time, 0 = used cached build result
2008-11-06 18:26:29 +00:00
stopTime integer,
2008-11-10 10:18:50 +00:00
system text not null,
foreign key (project) references projects(name), -- ignored by sqlite
foreign key (project, jobset) references jobsets(project, name) -- ignored by sqlite
);
2008-11-09 00:48:36 +00:00
-- Inputs of jobs/builds.
create table inputs (
id integer primary key autoincrement not null,
-- Which job or build this input belongs to. Exactly one must be non-null.
build integer,
job integer,
2008-11-10 10:18:50 +00:00
-- Copied from the jobsetinputs from which the build was created.
name text not null,
type text not null,
uri text,
revision integer,
tag text,
2008-11-06 18:26:29 +00:00
value text,
2008-11-09 00:48:36 +00:00
dependency integer, -- build ID of the input, for type == 'build'
2008-11-06 18:26:29 +00:00
path text,
2008-11-09 00:48:36 +00:00
foreign key (build) references builds(id) -- ignored by sqlite
foreign key (job) references jobs(id) -- ignored by sqlite
foreign key (dependency) references builds(id) -- ignored by sqlite
);
create table buildProducts (
2008-11-09 00:48:36 +00:00
build integer not null,
2008-11-08 22:40:12 +00:00
path text not null,
type text not null, -- "nix-build", "file", "doc", "report", ...
subtype text not null, -- "source-dist", "rpm", ...
2008-11-09 00:48:36 +00:00
primary key (build, path),
foreign key (build) references builds(id) on delete cascade -- ignored by sqlite
);
create table buildLogs (
2008-11-09 00:48:36 +00:00
build integer not null,
logPhase text not null,
path text not null,
type text not null,
2008-11-09 00:48:36 +00:00
primary key (build, logPhase),
foreign key (build) references builds(id) on delete cascade -- ignored by sqlite
);
-- Emulate "on delete cascade" foreign key constraints.
create trigger cascadeBuildDeletion
before delete on builds
for each row begin
2008-11-09 00:48:36 +00:00
--delete from buildInputs where build = old.id;
delete from buildLogs where build = old.id;
delete from buildProducts where build = old.id;
end;
2008-11-04 18:23:28 +00:00
create table projects (
name text primary key not null
);
-- A jobset consists of a set of inputs (e.g. SVN repositories), one
-- of which contains a Nix expression containing an attribute set
-- describing build jobs.
2008-11-10 10:18:50 +00:00
create table jobsets (
2008-11-04 18:23:28 +00:00
name text not null,
project text not null,
description text,
2008-11-10 10:18:50 +00:00
nixExprInput text not null, -- name of the jobsetInput containing the Nix expression
2008-11-04 18:23:28 +00:00
nixExprPath text not null, -- relative path of the Nix expression
primary key (project, name),
foreign key (project) references projects(name) on delete cascade, -- ignored by sqlite
2008-11-10 10:18:50 +00:00
foreign key (project, name, nixExprInput) references jobsetInputs(project, job, name)
2008-11-04 18:23:28 +00:00
);
2008-11-10 10:18:50 +00:00
create table jobsetInputs (
2008-11-04 18:23:28 +00:00
project text not null,
2008-11-06 18:26:29 +00:00
jobset text not null,
2008-11-04 18:23:28 +00:00
name text not null,
2008-11-06 18:26:29 +00:00
type text not null, -- "svn", "cvs", "path", "file", "string"
primary key (project, jobset, name),
2008-11-10 10:18:50 +00:00
foreign key (project, jobset) references jobsets(project, name) on delete cascade -- ignored by sqlite
2008-11-06 18:26:29 +00:00
);
2008-11-10 10:18:50 +00:00
create table jobsetInputAlts (
2008-11-06 18:26:29 +00:00
project text not null,
jobset text not null,
input text not null,
altnr integer,
-- urgh
2008-11-04 18:23:28 +00:00
uri text,
2008-11-06 18:26:29 +00:00
revision integer, -- for type == 'svn'
tag text, -- for type == 'cvs'
value text, -- for type == 'string'
primary key (project, jobset, input, altnr),
2008-11-10 10:18:50 +00:00
foreign key (project, jobset, input) references jobsetInputs(project, jobset, name) on delete cascade -- ignored by sqlite
2008-11-04 18:23:28 +00:00
);
2008-11-09 00:48:36 +00:00
create table jobs (
id integer primary key autoincrement not null,
timestamp integer not null, -- time this build was added to the db (in Unix time)
2008-11-09 00:48:36 +00:00
priority integer not null,
2008-11-10 10:18:50 +00:00
busy integer not null, -- true means someone is building this job now
locker text not null, -- !!! hostname/pid of the process building this job?
-- Info about the inputs.
project text not null, -- !!! foreign key
2008-11-10 10:18:50 +00:00
jobset text not null, -- !!! foreign key
attrName text not null,
-- What this job will build.
description text,
drvPath text not null,
outPath text not null,
2008-11-10 10:18:50 +00:00
system text not null,
foreign key (project) references projects(name), -- ignored by sqlite
foreign key (project, jobset) references jobsets(project, name) -- ignored by sqlite
);