From 2d989ef6cb8358c6606bca5d57842e46add37480 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sun, 9 Feb 2025 12:11:11 +0300 Subject: [PATCH] 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 --- ops/modules/tvl-buildkite.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ops/modules/tvl-buildkite.nix b/ops/modules/tvl-buildkite.nix index d9d79cd52..003a36fc6 100644 --- a/ops/modules/tvl-buildkite.nix +++ b/ops/modules/tvl-buildkite.nix @@ -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);