Add support for tracking custom metrics
Builds can now emit metrics that Hydra will store in its database and render as time series via flot charts. Typical applications are to keep track of performance indicators, coverage percentages, artifact sizes, and so on. For example, a coverage build can emit the coverage percentage as follows: echo "lineCoverage $pct %" > $out/nix-support/hydra-metrics Graphs of all metrics for a job can be seen at http://.../job/<project>/<jobset>/<job>#tabs-charts Specific metrics are also visible at http://.../job/<project>/<jobset>/<job>/metric/<metric> The latter URL also allows getting the data in JSON format (e.g. via "curl -H 'Accept: application/json'").
This commit is contained in:
@ -324,6 +324,28 @@ create table BuildProducts (
|
||||
);
|
||||
|
||||
|
||||
create table BuildMetrics (
|
||||
build integer not null,
|
||||
name text not null,
|
||||
|
||||
unit text,
|
||||
value double precision not null,
|
||||
|
||||
-- Denormalisation for performance: copy some columns from the
|
||||
-- corresponding build.
|
||||
project text not null,
|
||||
jobset text not null,
|
||||
job text not null,
|
||||
timestamp integer not null,
|
||||
|
||||
primary key (build, name),
|
||||
foreign key (build) references Builds(id) on delete cascade,
|
||||
foreign key (project) references Projects(name) on update cascade,
|
||||
foreign key (project, jobset) references Jobsets(project, name) on update cascade,
|
||||
foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade
|
||||
);
|
||||
|
||||
|
||||
-- Cache for inputs of type "path" (used for testing Hydra), storing
|
||||
-- the SHA-256 hash and store path for each source path. Also stores
|
||||
-- the timestamp when we first saw the path have these contents, which
|
||||
@ -590,6 +612,7 @@ create trigger NrBuildsFinished after insert or update or delete on Builds
|
||||
|
||||
create index IndexBuildInputsOnBuild on BuildInputs(build);
|
||||
create index IndexBuildInputsOnDependency on BuildInputs(dependency);
|
||||
create index IndexBuildMetricsOnJobTimestamp on BuildMetrics(project, jobset, job, timestamp desc);
|
||||
create index IndexBuildProducstOnBuildAndType on BuildProducts(build, type);
|
||||
create index IndexBuildProductsOnBuild on BuildProducts(build);
|
||||
create index IndexBuildStepsOnBusy on BuildSteps(busy) where busy = 1;
|
||||
|
Reference in New Issue
Block a user