Compare commits

...

6 commits

Author SHA1 Message Date
Skryta Istota
65b90ecd65
rollback(cilib_test) Synchronized the test file of the Ci library
Updated the continuous integration test file to be compatible with the newer main branch.
2025-12-03 18:35:36 +01:00
Skryta Istota
c8f51c73ed
fix(job) Fixed premature filtering of variables
Fixed excessive deletion of environment variables containing paths to nix store package files,
causing them to not be exported in Giltab's CI environment,
plus removed duplicate tests for moving environment variables.
2025-12-03 17:35:36 +01:00
Skryta Istota
8336e6d083
tests(modules_test) Extended test definition for modules
Extended the definition of tests for the continuous integration modules,
allowing for more in-depth testing of odd behavior of some configuration generators.
2025-12-03 16:55:05 +01:00
Skryta Istota
0ef6f4d2ff
rollback(jobPatched) Restored some features for patching jobs for ci
Tests for this filtering of environment variables in ci have also been rollback.
2025-12-03 16:35:45 +01:00
Skryta Istota
fb234b80bf
chore(ci) Added job to check correct passing of variables
Append a test for the correctness of transfer and creation of environment variables in ci,
and added the required packages to run the remaining jobs in the terminal.
2025-12-02 15:35:56 +01:00
Skryta Istota
d8e55a05b2
fix(nixfmt) Formatted modified files to default style
The style of files modified in this branch has been corrected.
2025-12-02 15:15:15 +01:00
5 changed files with 127 additions and 187 deletions

View file

@ -3,7 +3,7 @@
helpers,
}: let
inherit (lib) toList optionalAttrs optional;
inherit (helpers) prependToBeforeScript appendToAfterScript;
inherit (helpers) prependToBeforeScript appendToAfterScript filterJobVariables;
in
{
key,
@ -11,13 +11,16 @@ in
pipelineName,
nixConfig,
}:
if ! nixConfig.enable then job else
if ! nixConfig.enable
then job
else
(builtins.removeAttrs job ["variables" "cache"])
// (prependToBeforeScript ["source setup_nix_ci \"gitlab-ci:pipeline:${pipelineName}:job-deps:${key}\""] job)
// (appendToAfterScript ["finalize_nix_ci"] job)
// (let
variables = job.variables or {} //
optionalAttrs nixConfig.enableRunnerCache {
variables =
(filterJobVariables false job)
// optionalAttrs nixConfig.enableRunnerCache {
NIX_CI_CACHE_STRATEGY = "runner";
};
in
@ -26,8 +29,9 @@ in
inherit variables;
})
// (let
cache = (toList (job.cache or [])) ++
(optional nixConfig.enableRunnerCache {
cache =
(toList (job.cache or []))
++ (optional nixConfig.enableRunnerCache {
key = nixConfig.runnerCacheKey;
paths = [".nix-cache/"];
});

View file

@ -646,7 +646,7 @@ in rec {
};
depsDrv = cilib.mkJobDeps {
key = name;
job = config.finalConfig;
inherit job;
nixConfig = config.nix;
};
runnerDrv = cilib.mkJobRun {

View file

@ -1,5 +1,5 @@
{inputs, ...}: let
inherit (inputs) cilib;
inherit (inputs) cilib pkgs;
in
cilib.mkCI {
config.soonix = {
@ -58,9 +58,25 @@ in
};
};
pipelines."default" = {
stages = ["test" "build" "deploy"];
stages = ["check" "test" "build" "deploy"];
variables = {
EXAMPLE = "empty";
CURL = toString pkgs.curl;
};
jobs = {
"check" = {
stage = "check";
script = [
"set -euo pipefail"
"echo EXAMPLE=$EXAMPLE CURL=$CURL SAMPLE=$SAMPLE HELLO=$HELLO"
];
variables = {
SAMPLE = "working";
HELLO = toString pkgs.hello;
};
};
"test" = {
nix.deps = with pkgs; [coreutils nix];
stage = "test";
script = [
"nix run .#tests -- --junit=junit.xml"
@ -73,6 +89,7 @@ in
};
"docs" = {
stage = "build";
nix.deps = with pkgs; [coreutils nix];
script = [
# sh
''

View file

@ -56,28 +56,26 @@
}
{
name = "jobPatched nix disabled";
expected = {};
actual = mkJobPatched {
key = "test";
pipelineName = "test";
job = {};
nixConfig.enable = false;
};
}
{
name = "jobPatched nix disabled with variables and cache";
expected = {
cache = {
name = "some";
paths = [ "this" ];
};
variables = {
BASH = toString pkgs.bash;
TEST = "work";
};
variables."HELLO" = "world";
cache = [{key = "example";}];
};
actual = mkJobPatched {
key = "test";
pipelineName = "test";
job = {
cache = {
name = "some";
paths = [ "this" ];
};
variables = {
BASH = toString pkgs.bash;
TEST = "work";
};
variables."HELLO" = "world";
cache = [{key = "example";}];
};
nixConfig.enable = false;
};
@ -87,28 +85,11 @@
expected = {
after_script = ["finalize_nix_ci"];
before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""];
variables = {
BASH = toString pkgs.bash;
TEST = "work";
};
cache = [{
name = "some";
paths = [ "this" ];
}];
};
actual = mkJobPatched {
key = "test";
pipelineName = "test";
job = {
cache = {
name = "some";
paths = [ "this" ];
};
variables = {
BASH = toString pkgs.bash;
TEST = "work";
};
};
job = {};
nixConfig = {
enable = true;
enableRunnerCache = false;
@ -120,32 +101,18 @@
expected = {
after_script = ["finalize_nix_ci"];
before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""];
cache = [{
name = "some";
paths = [ "this" ];
}{
cache = [
{
key = "test";
paths = [".nix-cache/"];
}];
variables = {
NIX_CI_CACHE_STRATEGY = "runner";
BASH = toString pkgs.bash;
TEST = "work";
};
}
];
variables."NIX_CI_CACHE_STRATEGY" = "runner";
};
actual = mkJobPatched {
key = "test";
pipelineName = "test";
job = {
cache = {
name = "some";
paths = [ "this" ];
};
variables = {
BASH = toString pkgs.bash;
TEST = "work";
};
};
job = {};
nixConfig = {
enable = true;
enableRunnerCache = true;
@ -194,108 +161,46 @@
'';
}
{
name = "handle store paths in variables without nix config";
name = "ignore store paths in variables with nix disabled";
expected = {
stages = ["test"];
variables = {
EXAMPLE = "empty";
CURL = toString pkgs.curl;
};
test = {
stage = "test";
before_script = [ "./init" ];
script = [ "echo Hello World!" ];
after_script = [ "./clean" ];
cache = {
key = "simple";
paths = [ "~/random/" ];
};
variables = {
SAMPLE = "working";
HELLO = toString pkgs.hello;
variables."TEST" = "${pkgs.hello}";
};
};
};
actual = (mkPipeline {
actual =
(mkPipeline {
name = "test";
nixConfig.enable = false;
pipeline = {
stages = ["test"];
variables = {
EXAMPLE = "empty";
CURL = toString pkgs.curl;
};
jobs.test = {
stage = "test";
before_script = [ "./init" ];
script = [ "echo Hello World!" ];
after_script = [ "./clean" ];
cache = {
key = "simple";
paths = [ "~/random/" ];
};
variables = {
SAMPLE = "working";
HELLO = toString pkgs.hello;
};
variables."TEST" = "${pkgs.hello}";
};
};
}).finalConfig;
}
{
name = "handle store paths in variables with nix config";
# it doesn't make much sense to have any nix store path in variables, but we ignore it for global variables
name = "ignore store paths in global variables";
expected = {
stages = [ "test" ];
variables = {
EXAMPLE = "empty";
HELLO = "world";
CURL = toString pkgs.curl;
};
test = {
stage = "test";
before_script = [ "source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\"" "./init" ];
script = [ "echo Hello World!" ];
after_script = [ "./clean" "finalize_nix_ci" ];
cache = [{
key = "simple";
paths = [ "~/random/" ];
}{
key = "random";
paths = [ ".nix-cache/" ];
}];
variables = {
SAMPLE = "working";
HELLO = toString pkgs.hello;
NIX_CI_CACHE_STRATEGY = "runner";
};
};
};
actual = (mkPipeline {
actual =
(mkPipeline {
name = "test";
nixConfig = {
enable = true;
enableRunnerCache = true;
runnerCacheKey = "random";
};
nixConfig.enable = true;
pipeline = {
stages = [ "test" ];
variables = {
EXAMPLE = "empty";
HELLO = "world";
CURL = toString pkgs.curl;
};
jobs.test = {
stage = "test";
before_script = [ "./init" ];
script = [ "echo Hello World!" ];
after_script = [ "./clean" ];
cache = {
key = "simple";
paths = [ "~/random/" ];
};
variables = {
SAMPLE = "working";
HELLO = toString pkgs.hello;
};
};
jobs = {};
};
}).finalConfig;
}

View file

@ -10,9 +10,17 @@
simplePipeline = cilib.mkCI {
pipelines."test" = {
stages = ["test"];
variables = {
EXAMPLE = "empty";
CURL = toString pkgs.curl;
};
jobs."test" = {
stage = "test";
script = ["echo hello world"];
variables = {
SAMPLE = "working";
HELLO = toString pkgs.hello;
};
};
};
};
@ -30,21 +38,29 @@
(cilib.mkCI {}).packages;
}
{
name = "simple pipeline";
name = "simple pipeline final config";
expected = {
stages = [".pre" "test" ".post"];
variables = {
EXAMPLE = "empty";
CURL = toString pkgs.curl;
};
"test" = {
image = "$NIX_CI_IMAGE";
stage = "test";
before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""];
script = ["echo hello world"];
after_script = ["finalize_nix_ci"];
variables = {
SAMPLE = "working";
#HELLO = toString pkgs.hello;
};
};
};
actual = simplePipeline.pipelines."test".finalConfig;
}
{
name = "simple pipeline yaml";
name = "simple pipeline json";
type = "script";
script = let
package = simplePipeline.packages."gitlab-ci:pipeline:test";
@ -56,25 +72,23 @@
assert_file_contains ${package} 'gitlab-ci:pipeline:test:job-deps:test'
assert_file_contains ${package} 'finalize_nix_ci'
assert_file_contains ${package} 'echo hello world'
assert_file_contains ${package} '"EXAMPLE":"empty"'
assert_file_contains ${package} '"SAMPLE":"working"'
assert_file_contains ${package} '"CURL":"/nix/store/.*-curl-.*"'
'';
}
{
name = "dont fail on store paths";
name = "simple pipeline deps drv";
type = "script";
script = let
package =
(cilib.mkCI {
pipelines."test" = {
variables.EXAMPLE = "${pkgs.hello}";
};
}).packages."gitlab-ci:pipeline:test";
package = simplePipeline.packages."gitlab-ci:pipeline:test:job-deps:test";
in
# sh
''
${ntlib.helpers.path [pkgs.gnugrep]}
${ntlib.helpers.scriptHelpers}
assert_file_contains ${package} '[".pre",".post"]'
assert_file_contains ${package} '"EXAMPLE":"/nix/store/.*-hello-.*"'
assert_file_contains ${package} ':$PATH'
assert_file_contains ${package} 'HELLO="/nix/store/.*-hello-.*"'
'';
}
];