refactor(ops/tvl-buildkite): add concept of small/large slots
Adds a new tagging system to Buildkite agents, where agents are tagged with large/small slots. All agents have small slots, only some agents have large slots. The small slots are purely informative - nothing targets them, whereas large slots will be used for filtering agents. This allows us to target large slots in some builds and minimise the concurrent execution of extremely large builds, while keeping a large number of small slots around for all the light targets. This will need some tuning over time (also because tagging is a manual process). Change-Id: I15aa657773ed874d84d98e55238fb31c75d4efa7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/13120 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
e8146f9d01
commit
2d989ef6cb
1 changed files with 13 additions and 1 deletions
|
|
@ -27,10 +27,17 @@ in
|
|||
{
|
||||
options.services.depot.buildkite = {
|
||||
enable = lib.mkEnableOption description;
|
||||
|
||||
agentCount = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
description = "Number of Buildkite agents to launch";
|
||||
};
|
||||
|
||||
largeSlots = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = cfg.agentCount;
|
||||
description = "Number of agents with 'large=true'";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
|
@ -50,6 +57,9 @@ in
|
|||
|
||||
tags.hostname = hostname;
|
||||
|
||||
# all agents support small jobs
|
||||
tags.small = "true";
|
||||
|
||||
runtimePackages = with pkgs; [
|
||||
bash
|
||||
coreutils
|
||||
|
|
@ -61,7 +71,9 @@ in
|
|||
jq
|
||||
nix
|
||||
];
|
||||
};
|
||||
} // (lib.optionalAttrs (n <= cfg.largeSlots) {
|
||||
tags.large = "true";
|
||||
});
|
||||
})
|
||||
agents);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue