An aggregate is a trivial build that depends on other builds. This is
intended to provide a declarative replacement of Hydra's "view"
mechanism.
For instance, you can define an aggregate named "critical" that
depends on a selected set of jobs:
critical = releaseTools.aggregate
{ name = "foo-${tarball.version}";
members =
[ tarball
build.x86_64-linux
...
];
meta.description = "Release-critical builds";
};
The "critical" build will only succeed if all its members
(dependencies) succeed.
53 lines
1.0 KiB
Nix
53 lines
1.0 KiB
Nix
{pkgs}:
|
|
|
|
with pkgs;
|
|
|
|
rec {
|
|
|
|
sourceTarball = args: import ./source-tarball.nix (
|
|
{ inherit stdenv autoconf automake libtool;
|
|
} // args);
|
|
|
|
makeSourceTarball = sourceTarball; # compatibility
|
|
|
|
binaryTarball = args: import ./binary-tarball.nix (
|
|
{ inherit stdenv;
|
|
} // args);
|
|
|
|
antBuild = args: import ./ant-build.nix (
|
|
{ inherit pkgs;
|
|
} // args);
|
|
|
|
mvnBuild = args: import ./maven-build.nix (
|
|
{ inherit stdenv;
|
|
} // args);
|
|
|
|
nixBuild = args: import ./nix-build.nix (
|
|
{ inherit stdenv;
|
|
} // args);
|
|
|
|
coverageAnalysis = args: nixBuild (
|
|
{ inherit lcov;
|
|
doCoverageAnalysis = true;
|
|
} // args);
|
|
|
|
rpmBuild = args: import ./rpm-build.nix (
|
|
{ inherit vmTools;
|
|
} // args);
|
|
|
|
debBuild = args: import ./debian-build.nix (
|
|
{ inherit stdenv vmTools checkinstall;
|
|
} // args);
|
|
|
|
aggregate =
|
|
{ name, members, meta ? { } }:
|
|
pkgs.runCommand name
|
|
{ inherit members meta;
|
|
_hydraAggregate = true;
|
|
}
|
|
''
|
|
echo $members > $out
|
|
'';
|
|
|
|
}
|