about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-04-09T17·04+0200
committertazjin <mail@tazj.in>2021-04-09T19·08+0000
commitc0213702136221bc38b917e0def2fbe3d781761b (patch)
tree06e5544930b8f575beb8e29d5a1def6d8df47e79
parent5d71617eda151d92a417ae71010068be4c6af1e0 (diff)
refactor(whitby): Extract Buildkite agents into a module r/2456
There will be more Buildkite-agent specific configuration, and it's
already more than just the module setup, so extracting this makes
sense.

Change-Id: I56ce205c0cb4365317ed7ed5f2d525a0b425b861
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2906
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: sterni <sternenseemann@systemli.org>
-rw-r--r--ops/nixos/tvl-buildkite.nix36
-rw-r--r--ops/nixos/whitby/default.nix21
2 files changed, 41 insertions, 16 deletions
diff --git a/ops/nixos/tvl-buildkite.nix b/ops/nixos/tvl-buildkite.nix
new file mode 100644
index 000000000000..48515f6c80c2
--- /dev/null
+++ b/ops/nixos/tvl-buildkite.nix
@@ -0,0 +1,36 @@
+# Configuration for the TVL buildkite agents.
+{ config, depot, lib, ... }:
+
+let
+  cfg = config.services.depot.buildkite;
+  agents = lib.range 1 cfg.agentCount;
+  description = "Buildkite agents for TVL";
+
+  # All Buildkite hooks are actually besadii, but it's being invoked
+  # with different names.
+  buildkiteHooks = depot.third_party.runCommandNoCC "buildkite-hooks" {} ''
+    mkdir -p $out/bin
+    ln -s ${depot.ops.besadii}/bin/besadii $out/bin/post-command
+  '';
+in {
+  options.services.depot.buildkite = {
+    enable = lib.mkEnableOption description;
+    agentCount = lib.mkOption {
+      type = lib.types.int;
+      description = "Number of Buildkite agents to launch";
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    # Run the Buildkite agents using the default upstream module.
+    services.buildkite-agents = builtins.listToAttrs (map (n: rec {
+      name = "whitby-${toString n}";
+      value = {
+        inherit name;
+        enable = true;
+        tokenPath = "/etc/secrets/buildkite-agent-token";
+        hooks.post-command = "${buildkiteHooks}/bin/post-command";
+      };
+    }) agents);
+  };
+}
diff --git a/ops/nixos/whitby/default.nix b/ops/nixos/whitby/default.nix
index f7d8f4ef4a44..3c1c1f14bf51 100644
--- a/ops/nixos/whitby/default.nix
+++ b/ops/nixos/whitby/default.nix
@@ -5,13 +5,6 @@ let
   inherit (lib) range;
 
   nixpkgs = import depot.third_party.nixpkgsSrc {};
-
-  # All Buildkite hooks are actually besadii, but it's being invoked
-  # with different names.
-  buildkiteHooks = depot.third_party.runCommandNoCC "buildkite-hooks" {} ''
-    mkdir -p $out/bin
-    ln -s ${depot.ops.besadii}/bin/besadii $out/bin/post-command
-  '';
 in lib.fix(self: {
   imports = [
     "${depot.depotPath}/ops/nixos/clbot.nix"
@@ -21,6 +14,7 @@ in lib.fix(self: {
     "${depot.depotPath}/ops/nixos/paroxysm.nix"
     "${depot.depotPath}/ops/nixos/smtprelay.nix"
     "${depot.depotPath}/ops/nixos/sourcegraph.nix"
+    "${depot.depotPath}/ops/nixos/tvl-buildkite.nix"
     "${depot.depotPath}/ops/nixos/tvl-slapd/default.nix"
     "${depot.depotPath}/ops/nixos/tvl-sso/default.nix"
     "${depot.depotPath}/ops/nixos/www/b.tvl.fyi.nix"
@@ -194,15 +188,10 @@ in lib.fix(self: {
   };
 
   # Run a handful of Buildkite agents to support parallel builds.
-  services.buildkite-agents = listToAttrs (map (n: rec {
-    name = "whitby-${toString n}";
-    value = {
-      inherit name;
-      enable = true;
-      tokenPath = "/etc/secrets/buildkite-agent-token";
-      hooks.post-command = "${buildkiteHooks}/bin/post-command";
-    };
-  }) (range 1 32));
+  services.depot.buildkite = {
+    enable = true;
+    agentCount = 32;
+  };
 
   # Start a local SMTP relay to Gmail (used by gerrit)
   services.depot.smtprelay = {