2020-06-27 18:14:58 +02:00
|
|
|
# This file configures the primary build pipeline used for the
|
|
|
|
# top-level list of depot targets.
|
2022-01-16 13:55:36 +01:00
|
|
|
{ depot, pkgs, externalArgs, ... }:
|
2020-06-27 18:14:58 +02:00
|
|
|
|
|
|
|
let
|
2021-10-01 12:43:53 +02:00
|
|
|
pipeline = depot.nix.buildkite.mkPipeline {
|
|
|
|
headBranch = "refs/heads/canon";
|
|
|
|
drvTargets = depot.ci.targets;
|
2022-01-16 13:55:36 +01:00
|
|
|
|
2022-01-30 17:06:58 +01:00
|
|
|
parentTargetMap =
|
|
|
|
if (externalArgs ? parentTargetMap)
|
2022-01-16 13:55:36 +01:00
|
|
|
then builtins.fromJSON (builtins.readFile externalArgs.parentTargetMap)
|
2022-01-30 17:06:58 +01:00
|
|
|
else { };
|
2022-01-22 12:47:32 +01:00
|
|
|
|
|
|
|
postBuildSteps = [
|
|
|
|
# After successful builds, create a gcroot for builds on canon.
|
|
|
|
#
|
|
|
|
# This anchors *most* of the depot, in practice it's unimportant
|
|
|
|
# if there is a build race and we get +-1 of the targets.
|
|
|
|
#
|
|
|
|
# Unfortunately this requires a third evaluation of the graph, but
|
|
|
|
# since it happens after :duck: it should not affect the timing of
|
|
|
|
# status reporting back to Gerrit.
|
|
|
|
{
|
|
|
|
label = ":anchor:";
|
|
|
|
branches = "refs/heads/canon";
|
|
|
|
command = ''
|
|
|
|
nix-build -A ci.gcroot --out-link /nix/var/nix/gcroots/depot/canon
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
];
|
2021-10-01 12:43:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
drvmap = depot.nix.buildkite.mkDrvmap depot.ci.targets;
|
2022-01-30 17:06:58 +01:00
|
|
|
in
|
2022-09-26 19:33:05 +02:00
|
|
|
pkgs.runCommand "depot-pipeline" { } ''
|
2021-10-01 12:43:53 +02:00
|
|
|
mkdir $out
|
|
|
|
cp -r ${pipeline}/* $out
|
|
|
|
cp ${drvmap} $out/drvmap.json
|
|
|
|
''
|