Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions ci/eval/compare/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,15 @@ let
// lib.mapAttrs' (
kernel: rebuilds: lib.nameValuePair "10.rebuild-${kernel}-stdenv" (lib.elem "stdenv" rebuilds)
) rebuildsByKernel
# Set the "11.by: package-maintainer" label to whether all packages directly
# changed are maintained by the PR's author.
// {
"10.rebuild-nixos-tests" =
lib.elem "nixosTests.simple" (extractPackageNames diffAttrs.rebuilds)
&&
# Only set this label when no other label with indication for staging has been set.
# This avoids confusion whether to target staging or batch this with kernel updates.
lib.last (lib.sort lib.lessThan (lib.attrValues rebuildCountByKernel)) <= 500;
# Set the "11.by: package-maintainer" label to whether all packages directly
# changed are maintained by the PR's author.
"11.by: package-maintainer" =
maintainers ? ${githubAuthorId}
&& lib.all (lib.flip lib.elem maintainers.${githubAuthorId}) (
Expand Down
18 changes: 15 additions & 3 deletions ci/eval/outpaths.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
}:
let
lib = import (path + "/lib");
hydraJobs =

nixpkgsJobs =
import (path + "/pkgs/top-level/release.nix")
# Compromise: accuracy vs. resources needed for evaluation.
{
Expand Down Expand Up @@ -59,9 +60,15 @@ let
__allowFileset = false;
};
};

nixosJobs = import (path + "/nixos/release.nix") {
inherit attrNamesOnly;
supportedSystems = if systems == null then [ builtins.currentSystem ] else systems;
};

recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };

# hydraJobs leaves recurseForDerivations as empty attrmaps;
# release-lib leaves recurseForDerivations as empty attrmaps;
# that would break nix-env and we also need to recurse everywhere.
tweak = lib.mapAttrs (
name: val:
Expand All @@ -87,4 +94,9 @@ let
];

in
tweak (builtins.removeAttrs hydraJobs blacklist)
tweak (
(builtins.removeAttrs nixpkgsJobs blacklist)
// {
nixosTests.simple = nixosJobs.tests.simple;
}
)
36 changes: 29 additions & 7 deletions nixos/release.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,16 @@ with import ../lib;
"aarch64-linux"
],
configuration ? { },

# This flag, if set to true, causes the resulting tree of attributes
# to *not* have a ".${system}" suffixed upon every job name like Hydra
# expects. So far, this is only implemented for `tests`.
#
# This flag exists mainly for use by ci/eval/attrpaths.nix; see
# that file for full details. The exact behavior of this flag
# may change; it should be considered an internal implementation
# detail of ci/eval.
attrNamesOnly ? false,
}:

with import ../pkgs/top-level/release-lib.nix { inherit supportedSystems; };
Expand All @@ -31,23 +41,35 @@ let
import ./tests/all-tests.nix {
inherit system;
pkgs = import ./.. { inherit system; };
callTest = config: {
${system} = hydraJob config.test;
};
callTest =
config:
if attrNamesOnly then
hydraJob config.test
else
{
${system} = hydraJob config.test;
};
}
// {
# for typechecking of the scripts and evaluation of
# the nodes, without running VMs.
allDrivers = import ./tests/all-tests.nix {
inherit system;
pkgs = import ./.. { inherit system; };
callTest = config: {
${system} = hydraJob config.driver;
};
callTest =
config:
if attrNamesOnly then
hydraJob config.test
else
{
${system} = hydraJob config.driver;
};
};
};

allTests = foldAttrs recursiveUpdate { } (map allTestsForSystem supportedSystems);
allTests = foldAttrs recursiveUpdate { } (
map allTestsForSystem (if attrNamesOnly then [ (head supportedSystems) ] else supportedSystems)
);

pkgs = import ./.. { system = "x86_64-linux"; };

Expand Down
10 changes: 1 addition & 9 deletions nixos/tests/simple.nix
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
{ pkgs, ... }:
{
name = "simple";
meta = with pkgs.lib.maintainers; {
maintainers = [ ];
};

nodes.machine =
{ ... }:
{
imports = [ ../modules/profiles/minimal.nix ];
};
nodes.machine = { };

testScript = ''
start_all()
Expand Down
Loading