refactor(ci-builds): Split up CI builds into multiple buckets
These categories separate CI targets, which hopefully avoids the out-of-space errors we have been seeing on Sourcehut. The sets of CI build targets are made available in the depot itself so that besadii can be updated to create a new build for each target group. For convenience, 'ciBuilds' contains an '__allTargets' attribute which combines the contents of each target batch - this makes it possible to still invoke a build for everything by using: nix-build -A ciBuilds.__allTargets Note: Some targets that were previously built in CI aren't anymore, most importantly my NixOS systems which don't fit on Sourcehut. Change-Id: Ia15ed7b743c8add51ae08ce0827a0ddfacd637e2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/570 Reviewed-by: lukegb <lukegb@tvl.fyi>
This commit is contained in:
parent
f2980dfc16
commit
1640d9d145
2 changed files with 73 additions and 32 deletions
|
@ -1,35 +1,70 @@
|
||||||
# This file defines the derivations that should be built by CI.
|
# This file defines the derivations that should be built by CI.
|
||||||
#
|
#
|
||||||
# The plan is still to implement recursive tree traversal
|
# The "categories" (i.e. attributes) below exist because we run out of
|
||||||
# automatically and detect all derivations that have `meta.enableCI =
|
# space on Sourcehut otherwise.
|
||||||
# true`, but this is currently more effort than it would save me.
|
{ depot, lib, ... }:
|
||||||
|
|
||||||
with (import ./default.nix {}); [
|
let
|
||||||
fun.amsterdump
|
inherit (builtins) attrNames filter foldl' getAttr substring;
|
||||||
fun.gemma
|
|
||||||
fun.quinistry
|
|
||||||
fun.watchblob
|
|
||||||
fun.wcl
|
|
||||||
lisp.dns
|
|
||||||
nix.buildLisp.example
|
|
||||||
nix.yants.tests
|
|
||||||
ops."posix_mq.rs"
|
|
||||||
ops.besadii
|
|
||||||
ops.journaldriver
|
|
||||||
ops.kms_pass
|
|
||||||
ops.kontemplate
|
|
||||||
ops.mq_cli
|
|
||||||
third_party.cgit
|
|
||||||
third_party.git
|
|
||||||
third_party.lisp # will build all third-party libraries
|
|
||||||
third_party.nix
|
|
||||||
tools.cheddar
|
|
||||||
web.blog
|
|
||||||
web.cgit-taz
|
|
||||||
web.tvl
|
|
||||||
|
|
||||||
# tazjin's personal things
|
in lib.fix(self: {
|
||||||
|
__apprehendEvaluators = throw ''
|
||||||
|
Do not evaluate this attribute set directly. It exists only to group builds
|
||||||
|
for CI runs of different "project groups".
|
||||||
|
|
||||||
|
To use the depot, always start from the top-level attribute tree instead.
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Names of all evaluatable attributes in here. This list will be
|
||||||
|
# used to trigger builds for each key.
|
||||||
|
__evaluatable = filter (key: (substring 0 2 key) != "__") (attrNames self);
|
||||||
|
|
||||||
|
# List of non-public targets, these are only used in local builds
|
||||||
|
# and not in CI.
|
||||||
|
__nonpublic = with depot; [
|
||||||
users.tazjin.emacs
|
users.tazjin.emacs
|
||||||
users.tazjin.nixos.camdenSystem
|
users.tazjin.nixos.camdenSystem
|
||||||
users.tazjin.nixos.frogSystem
|
users.tazjin.nixos.frogSystem
|
||||||
]
|
];
|
||||||
|
|
||||||
|
# Combined list of all the targets, used for building everything locally.
|
||||||
|
__allTargets = foldl' (x: y: x ++ y) self.__nonpublic
|
||||||
|
(map (k: getAttr k self) self.__evaluatable);
|
||||||
|
|
||||||
|
fun = with depot.fun; [
|
||||||
|
amsterdump
|
||||||
|
gemma
|
||||||
|
quinistry
|
||||||
|
watchblob
|
||||||
|
wcl
|
||||||
|
];
|
||||||
|
|
||||||
|
gitAndFriends = with depot; [
|
||||||
|
third_party.cgit
|
||||||
|
third_party.git
|
||||||
|
web.cgit-taz
|
||||||
|
];
|
||||||
|
|
||||||
|
nix = [ depot.third_party.nix ];
|
||||||
|
|
||||||
|
ops = with depot.ops; [
|
||||||
|
depot.ops."posix_mq.rs"
|
||||||
|
besadii
|
||||||
|
journaldriver
|
||||||
|
kms_pass
|
||||||
|
kontemplate
|
||||||
|
mq_cli
|
||||||
|
];
|
||||||
|
|
||||||
|
various = with depot; [
|
||||||
|
tools.cheddar
|
||||||
|
lisp.dns
|
||||||
|
nix.buildLisp.example
|
||||||
|
nix.yants.tests
|
||||||
|
];
|
||||||
|
|
||||||
|
web = with depot.web; [
|
||||||
|
blog
|
||||||
|
tvl
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
|
@ -18,6 +18,9 @@ let
|
||||||
config = depot: {
|
config = depot: {
|
||||||
inherit depot;
|
inherit depot;
|
||||||
|
|
||||||
|
# Expose lib & ciBuilds attributes to packages.
|
||||||
|
inherit (depot) ciBuilds lib;
|
||||||
|
|
||||||
# Pass third_party as 'pkgs' (for compatibility with external
|
# Pass third_party as 'pkgs' (for compatibility with external
|
||||||
# imports for certain subdirectories)
|
# imports for certain subdirectories)
|
||||||
pkgs = depot.third_party;
|
pkgs = depot.third_party;
|
||||||
|
@ -59,10 +62,13 @@ in fix(self: {
|
||||||
# Make the path to the depot available for things that might need it
|
# Make the path to the depot available for things that might need it
|
||||||
# (e.g. NixOS module inclusions)
|
# (e.g. NixOS module inclusions)
|
||||||
depotPath = ./.;
|
depotPath = ./.;
|
||||||
|
|
||||||
|
# Load CI builds in a way that can be injected into programs like besadii.
|
||||||
|
ciBuilds = import ./ci-builds.nix self.config;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add local packages as structured by readTree
|
# Add local packages as structured by readTree
|
||||||
// (localPkgs (readTree' (self.config // { inherit (self) lib; })))
|
// (localPkgs (readTree' self.config))
|
||||||
|
|
||||||
# Load overrides into the top-level.
|
# Load overrides into the top-level.
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in a new issue