about summary refs log tree commit diff
path: root/default.nix
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2020-08-27T00·05+0100
committertazjin <mail@tazj.in>2020-08-31T23·14+0000
commit61d2d2d50379e8e445255ec7863f1610ce984b26 (patch)
tree38dd9d28e41d2439631f75b5d766f218c6228cfe /default.nix
parent21690c644bc503e4c8cc55df00b398ab81fd7444 (diff)
feat(ops/pipelines): Dynamically generate CI pipeline from targets r/1747
Create the pipeline by outputting a file that contains nix-build
invocations for each target's *derivation path*.

Each invocation has a generated Nix expression passed to it with `-E`
which fetches the correct target from the tree while correctly
handling targets with strange characters (such as in Go-packages).

This makes it possible to run target-level granular pipelines. We're
getting somewhere!

Change-Id: Ia6946e389dafd1d4926130bb8891446d6e17133b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1855
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix11
1 files changed, 8 insertions, 3 deletions
diff --git a/default.nix b/default.nix
index b0b5399c4bc2..151d8987ea3d 100644
--- a/default.nix
+++ b/default.nix
@@ -73,9 +73,14 @@ in fix(self: {
 
   # List of all buildable targets, for CI purposes.
   #
-  # Note: This *must* be a nested attribute, otherwise we will get
-  # infinite recursion and everything blows up.
-  ci.targets = gather self;
+  # Note: To prevent infinite recursion, this *must* be a nested
+  # attribute set (which does not have a __readTree attribute).
+  ci.targets = gather (self // {
+    # remove the pipelines themselves from the set over which to
+    # generate pipelines because that also leads to infinite
+    # recursion.
+    ops = self.ops // { pipelines = null; };
+  });
 }
 
 # Add local packages as structured by readTree