Merge pull request #112637 from hercules-ci/hercules-ci-agent-maintenance

nixos/hercules-ci-agent: maintenance
This commit is contained in:
Robert Hensing 2021-02-10 11:02:45 +01:00 committed by GitHub
commit 075e1f7ee4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 31 deletions

View file

@ -7,7 +7,6 @@ Platform-specific code is in the respective default.nix files.
*/ */
{ config, lib, options, pkgs, ... }: { config, lib, options, pkgs, ... }:
let let
inherit (lib) inherit (lib)
filterAttrs filterAttrs
@ -22,7 +21,7 @@ let
cfg = cfg =
config.services.hercules-ci-agent; config.services.hercules-ci-agent;
format = pkgs.formats.toml {}; format = pkgs.formats.toml { };
settingsModule = { config, ... }: { settingsModule = { config, ... }: {
freeformType = format.type; freeformType = format.type;
@ -36,10 +35,14 @@ let
}; };
concurrentTasks = mkOption { concurrentTasks = mkOption {
description = '' description = ''
Number of tasks to perform simultaneously, such as evaluations, derivations. Number of tasks to perform simultaneously.
You must have a total capacity across agents of at least 2 concurrent tasks on <literal>x86_64-linux</literal> A task is a single derivation build or an evaluation.
to allow for import from derivation. At minimum, you need 2 concurrent tasks for <literal>x86_64-linux</literal>
in your cluster, to allow for import from derivation.
<literal>concurrentTasks</literal> can be around the CPU core count or lower if memory is
the bottleneck.
''; '';
type = types.int; type = types.int;
default = 4; default = 4;
@ -85,38 +88,39 @@ let
}; };
}; };
# TODO (2022) remove # TODO (roberth, >=2022) remove
checkNix = checkNix =
if !cfg.checkNix if !cfg.checkNix
then "" then ""
else if lib.versionAtLeast config.nix.package.version "2.3.10" else if lib.versionAtLeast config.nix.package.version "2.3.10"
then "" then ""
else pkgs.stdenv.mkDerivation { else
name = "hercules-ci-check-system-nix-src"; pkgs.stdenv.mkDerivation {
inherit (config.nix.package) src patches; name = "hercules-ci-check-system-nix-src";
configurePhase = ":"; inherit (config.nix.package) src patches;
buildPhase = '' configurePhase = ":";
echo "Checking in-memory pathInfoCache expiry" buildPhase = ''
if ! grep 'PathInfoCacheValue' src/libstore/store-api.hh >/dev/null; then echo "Checking in-memory pathInfoCache expiry"
cat 1>&2 <<EOF if ! grep 'PathInfoCacheValue' src/libstore/store-api.hh >/dev/null; then
cat 1>&2 <<EOF
You are deploying Hercules CI Agent on a system with an incompatible You are deploying Hercules CI Agent on a system with an incompatible
nix-daemon. Please make sure nix.package is set to a Nix version of at nix-daemon. Please make sure nix.package is set to a Nix version of at
least 2.3.10 or a master version more recent than Mar 12, 2020. least 2.3.10 or a master version more recent than Mar 12, 2020.
EOF EOF
exit 1 exit 1
fi fi
''; '';
installPhase = "touch $out"; installPhase = "touch $out";
}; };
in in
{ {
imports = [ imports = [
(mkRenamedOptionModule ["services" "hercules-ci-agent" "extraOptions"] ["services" "hercules-ci-agent" "settings"]) (mkRenamedOptionModule [ "services" "hercules-ci-agent" "extraOptions" ] [ "services" "hercules-ci-agent" "settings" ])
(mkRenamedOptionModule ["services" "hercules-ci-agent" "baseDirectory"] ["services" "hercules-ci-agent" "settings" "baseDirectory"]) (mkRenamedOptionModule [ "services" "hercules-ci-agent" "baseDirectory" ] [ "services" "hercules-ci-agent" "settings" "baseDirectory" ])
(mkRenamedOptionModule ["services" "hercules-ci-agent" "concurrentTasks"] ["services" "hercules-ci-agent" "settings" "concurrentTasks"]) (mkRenamedOptionModule [ "services" "hercules-ci-agent" "concurrentTasks" ] [ "services" "hercules-ci-agent" "settings" "concurrentTasks" ])
(mkRemovedOptionModule ["services" "hercules-ci-agent" "patchNix"] "Nix versions packaged in this version of Nixpkgs don't need a patched nix-daemon to work correctly in Hercules CI Agent clusters.") (mkRemovedOptionModule [ "services" "hercules-ci-agent" "patchNix" ] "Nix versions packaged in this version of Nixpkgs don't need a patched nix-daemon to work correctly in Hercules CI Agent clusters.")
]; ];
options.services.hercules-ci-agent = { options.services.hercules-ci-agent = {

View file

@ -7,9 +7,7 @@ Code that is shared with nix-darwin goes in common.nix.
*/ */
{ pkgs, config, lib, ... }: { pkgs, config, lib, ... }:
let let
inherit (lib) mkIf mkDefault; inherit (lib) mkIf mkDefault;
cfg = config.services.hercules-ci-agent; cfg = config.services.hercules-ci-agent;
@ -21,7 +19,7 @@ in
{ {
imports = [ imports = [
./common.nix ./common.nix
(lib.mkRenamedOptionModule ["services" "hercules-ci-agent" "user"] ["systemd" "services" "hercules-ci-agent" "serviceConfig" "User"]) (lib.mkRenamedOptionModule [ "services" "hercules-ci-agent" "user" ] [ "systemd" "services" "hercules-ci-agent" "serviceConfig" "User" ])
]; ];
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -80,6 +78,8 @@ in
isSystemUser = true; isSystemUser = true;
}; };
users.groups.hercules-ci-agent = {}; users.groups.hercules-ci-agent = { };
}; };
meta.maintainers = [ lib.maintainers.roberth ];
} }