From 1c9e7c77c5f17c6f15bc6b0f705b551ac5b70e2b Mon Sep 17 00:00:00 2001 From: technofab Date: Tue, 2 Dec 2025 15:09:27 +0100 Subject: [PATCH 1/9] chore: add test and docs for handling nix store paths in global variables --- docs/index.md | 11 +++++++++++ tests/cilib_test.nix | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/docs/index.md b/docs/index.md index 214fbf3..14f7da3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,3 +9,14 @@ This project provides a Nix flake module that allows you to generate your `.gitl - **Modularity:** Define and manage your CI configurations in a structured and modular way using Nix modules, making it easier to share and reuse CI logic across multiple projects. This documentation will guide you through setting up and using Nix GitLab CI for your projects. + +## Warnings + +To save you from frantically searching these docs if something doesn't work as expected, here are the most important warnings ;) + +!!! warning + + Do not put Nix store paths into global/pipeline variables. They will simply be passed through, + resulting in bad portability (if two runners have different archs for example, one cannot find the path). + If you need any Nix store path in env variables, always do it on the job level, there + it will automatically be computed at runtime, thus will always work no matter which runner it runs on. diff --git a/tests/cilib_test.nix b/tests/cilib_test.nix index b53308c..2322906 100644 --- a/tests/cilib_test.nix +++ b/tests/cilib_test.nix @@ -163,6 +163,28 @@ }; }).finalConfig; } + { + # 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 = { + variables = { + HELLO = "world"; + CURL = toString pkgs.curl; + }; + }; + actual = + (mkPipeline { + name = "test"; + nixConfig.enable = true; + pipeline = { + variables = { + HELLO = "world"; + CURL = toString pkgs.curl; + }; + jobs = {}; + }; + }).finalConfig; + } ]; }; } From 97fb4fafc3edb77b2bbfcf264be40e5b30b058af Mon Sep 17 00:00:00 2001 From: technofab Date: Tue, 2 Dec 2025 15:10:00 +0100 Subject: [PATCH 2/9] fix(jobPatched): handle non-nix jobs correctly fix mkJobPatched removing `cache` and `variables` from non-nix jobs See !15 for more --- lib/impl/jobPatched.nix | 13 ++++++------- tests/cilib_test.nix | 23 +++++++++++++++++++++-- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/lib/impl/jobPatched.nix b/lib/impl/jobPatched.nix index c7134fb..367a374 100644 --- a/lib/impl/jobPatched.nix +++ b/lib/impl/jobPatched.nix @@ -11,13 +11,13 @@ in pipelineName, nixConfig, }: - (builtins.removeAttrs job ["variables" "cache"]) - // (optionalAttrs nixConfig.enable ( - (prependToBeforeScript ["source setup_nix_ci \"gitlab-ci:pipeline:${pipelineName}:job-deps:${key}\""] job) + 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) - )) - // optionalAttrs nixConfig.enable ( - (let + // (let variables = (filterJobVariables false job) // optionalAttrs nixConfig.enableRunnerCache { @@ -40,4 +40,3 @@ in optionalAttrs (cache != []) { inherit cache; }) - ) diff --git a/tests/cilib_test.nix b/tests/cilib_test.nix index 2322906..3b76fb8 100644 --- a/tests/cilib_test.nix +++ b/tests/cilib_test.nix @@ -64,6 +64,22 @@ nixConfig.enable = false; }; } + { + name = "jobPatched nix disabled with variables and cache"; + expected = { + variables."HELLO" = "world"; + cache = [{key = "example";}]; + }; + actual = mkJobPatched { + key = "test"; + pipelineName = "test"; + job = { + variables."HELLO" = "world"; + cache = [{key = "example";}]; + }; + nixConfig.enable = false; + }; + } { name = "jobPatched without runner cache"; expected = { @@ -145,10 +161,13 @@ ''; } { - name = "handle store paths in variables"; + name = "ignore store paths in variables with nix disabled"; expected = { stages = ["test"]; - test.stage = "test"; + test = { + stage = "test"; + variables."TEST" = "${pkgs.hello}"; + }; }; actual = (mkPipeline { From 59f8bd169ae2733238455899fb3bace9cab99ff7 Mon Sep 17 00:00:00 2001 From: technofab Date: Tue, 2 Dec 2025 15:12:28 +0100 Subject: [PATCH 3/9] chore: bump version --- lib/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/VERSION b/lib/VERSION index cb2b00e..fd2a018 100644 --- a/lib/VERSION +++ b/lib/VERSION @@ -1 +1 @@ -3.0.1 +3.1.0 From d8e55a05b2d5eaad335c5c038dc729c342a8e81f Mon Sep 17 00:00:00 2001 From: Skryta Istota <6970043-hidden-being@users.noreply.gitlab.com> Date: Tue, 2 Dec 2025 15:15:15 +0100 Subject: [PATCH 4/9] fix(nixfmt) Formatted modified files to default style The style of files modified in this branch has been corrected. --- lib/impl/jobPatched.nix | 54 +++++++------ tests/cilib_test.nix | 174 +++++++++++++++++++++------------------- 2 files changed, 121 insertions(+), 107 deletions(-) diff --git a/lib/impl/jobPatched.nix b/lib/impl/jobPatched.nix index 73adb38..2467ae6 100644 --- a/lib/impl/jobPatched.nix +++ b/lib/impl/jobPatched.nix @@ -11,28 +11,32 @@ in pipelineName, nixConfig, }: - 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 { - NIX_CI_CACHE_STRATEGY = "runner"; - }; - in - # filter empty variables - optionalAttrs (variables != {}) { - inherit variables; - }) - // (let - cache = (toList (job.cache or [])) ++ - (optional nixConfig.enableRunnerCache { - key = nixConfig.runnerCacheKey; - paths = [ ".nix-cache/" ]; - }); - in - # filter empty cache - optionalAttrs (cache != []) { - inherit cache; - }) + 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 { + NIX_CI_CACHE_STRATEGY = "runner"; + }; + in + # filter empty variables + optionalAttrs (variables != {}) { + inherit variables; + }) + // (let + cache = + (toList (job.cache or [])) + ++ (optional nixConfig.enableRunnerCache { + key = nixConfig.runnerCacheKey; + paths = [".nix-cache/"]; + }); + in + # filter empty cache + optionalAttrs (cache != []) { + inherit cache; + }) diff --git a/tests/cilib_test.nix b/tests/cilib_test.nix index 6de4ed6..a46d24a 100644 --- a/tests/cilib_test.nix +++ b/tests/cilib_test.nix @@ -59,7 +59,7 @@ expected = { cache = { name = "some"; - paths = [ "this" ]; + paths = ["this"]; }; variables = { BASH = toString pkgs.bash; @@ -72,7 +72,7 @@ job = { cache = { name = "some"; - paths = [ "this" ]; + paths = ["this"]; }; variables = { BASH = toString pkgs.bash; @@ -85,16 +85,18 @@ { name = "jobPatched without runner cache"; expected = { - after_script = [ "finalize_nix_ci" ]; - before_script = [ "source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\"" ]; + 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" ]; - }]; + cache = [ + { + name = "some"; + paths = ["this"]; + } + ]; }; actual = mkJobPatched { key = "test"; @@ -102,7 +104,7 @@ job = { cache = { name = "some"; - paths = [ "this" ]; + paths = ["this"]; }; variables = { BASH = toString pkgs.bash; @@ -118,15 +120,18 @@ { name = "jobPatched with runner cache"; expected = { - after_script = [ "finalize_nix_ci" ]; - before_script = [ "source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\"" ]; - cache = [{ - name = "some"; - paths = [ "this" ]; - }{ - key = "test"; - paths = [ ".nix-cache/" ]; - }]; + after_script = ["finalize_nix_ci"]; + before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""]; + cache = [ + { + name = "some"; + paths = ["this"]; + } + { + key = "test"; + paths = [".nix-cache/"]; + } + ]; variables = { NIX_CI_CACHE_STRATEGY = "runner"; BASH = toString pkgs.bash; @@ -139,7 +144,7 @@ job = { cache = { name = "some"; - paths = [ "this" ]; + paths = ["this"]; }; variables = { BASH = toString pkgs.bash; @@ -196,19 +201,19 @@ { name = "handle store paths in variables without nix config"; expected = { - stages = [ "test" ]; + stages = ["test"]; variables = { EXAMPLE = "empty"; CURL = toString pkgs.curl; }; test = { stage = "test"; - before_script = [ "./init" ]; - script = [ "echo Hello World!" ]; - after_script = [ "./clean" ]; + before_script = ["./init"]; + script = ["echo Hello World!"]; + after_script = ["./clean"]; cache = { key = "simple"; - paths = [ "~/random/" ]; + paths = ["~/random/"]; }; variables = { SAMPLE = "working"; @@ -216,52 +221,56 @@ }; }; }; - 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/" ]; - }; + actual = + (mkPipeline { + name = "test"; + nixConfig.enable = false; + pipeline = { + stages = ["test"]; variables = { - SAMPLE = "working"; - HELLO = toString pkgs.hello; + 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; + }; }; }; - }; - }).finalConfig; + }).finalConfig; } { name = "handle store paths in variables with nix config"; expected = { - stages = [ "test" ]; + stages = ["test"]; variables = { EXAMPLE = "empty"; 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/" ]; - }]; + 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; @@ -269,35 +278,36 @@ }; }; }; - actual = (mkPipeline { - name = "test"; - nixConfig = { - enable = true; - enableRunnerCache = true; - runnerCacheKey = "random"; - }; - pipeline = { - stages = [ "test" ]; - variables = { - EXAMPLE = "empty"; - CURL = toString pkgs.curl; + actual = + (mkPipeline { + name = "test"; + nixConfig = { + enable = true; + enableRunnerCache = true; + runnerCacheKey = "random"; }; - jobs.test = { - stage = "test"; - before_script = [ "./init" ]; - script = [ "echo Hello World!" ]; - after_script = [ "./clean" ]; - cache = { - key = "simple"; - paths = [ "~/random/" ]; - }; + pipeline = { + stages = ["test"]; variables = { - SAMPLE = "working"; - HELLO = toString pkgs.hello; + 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; + }; }; }; - }; - }).finalConfig; + }).finalConfig; } ]; }; From fb234b80bf11993c91b5d9a239d009f1f92c2d27 Mon Sep 17 00:00:00 2001 From: Skryta Istota <6970043-hidden-being@users.noreply.gitlab.com> Date: Tue, 2 Dec 2025 15:35:56 +0100 Subject: [PATCH 5/9] 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. --- nix/repo/ci.nix | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/nix/repo/ci.nix b/nix/repo/ci.nix index 157ede7..634305d 100644 --- a/nix/repo/ci.nix +++ b/nix/repo/ci.nix @@ -1,5 +1,5 @@ {inputs, ...}: let - inherit (inputs) cilib; + inherit (inputs) cilib pkgs; in cilib.mkCI { config.soonix = { @@ -58,9 +58,26 @@ 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; + FF_SCRIPT_SECTIONS = "true"; + }; + }; "test" = { + nix.deps = with pkgs; [coreutils nix]; stage = "test"; script = [ "nix run .#tests -- --junit=junit.xml" @@ -73,6 +90,7 @@ in }; "docs" = { stage = "build"; + nix.deps = with pkgs; [coreutils nix]; script = [ # sh '' From 0ef6f4d2ff91ec41ef845ca506934c0492538e7b Mon Sep 17 00:00:00 2001 From: Skryta Istota <6970043-hidden-being@users.noreply.gitlab.com> Date: Wed, 3 Dec 2025 16:35:45 +0100 Subject: [PATCH 6/9] rollback(jobPatched) Restored some features for patching jobs for ci Tests for this filtering of environment variables in ci have also been rollback. --- lib/impl/jobPatched.nix | 4 ++-- nix/repo/ci.nix | 1 - tests/cilib_test.nix | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/impl/jobPatched.nix b/lib/impl/jobPatched.nix index 2467ae6..367a374 100644 --- a/lib/impl/jobPatched.nix +++ b/lib/impl/jobPatched.nix @@ -3,7 +3,7 @@ helpers, }: let inherit (lib) toList optionalAttrs optional; - inherit (helpers) prependToBeforeScript appendToAfterScript; + inherit (helpers) prependToBeforeScript appendToAfterScript filterJobVariables; in { key, @@ -19,7 +19,7 @@ in // (appendToAfterScript ["finalize_nix_ci"] job) // (let variables = - job.variables or {} + (filterJobVariables false job) // optionalAttrs nixConfig.enableRunnerCache { NIX_CI_CACHE_STRATEGY = "runner"; }; diff --git a/nix/repo/ci.nix b/nix/repo/ci.nix index 634305d..9ef9aac 100644 --- a/nix/repo/ci.nix +++ b/nix/repo/ci.nix @@ -73,7 +73,6 @@ in variables = { SAMPLE = "working"; HELLO = toString pkgs.hello; - FF_SCRIPT_SECTIONS = "true"; }; }; "test" = { diff --git a/tests/cilib_test.nix b/tests/cilib_test.nix index a46d24a..1661c8c 100644 --- a/tests/cilib_test.nix +++ b/tests/cilib_test.nix @@ -88,7 +88,7 @@ after_script = ["finalize_nix_ci"]; before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""]; variables = { - BASH = toString pkgs.bash; + #BASH = toString pkgs.bash; TEST = "work"; }; cache = [ @@ -134,7 +134,7 @@ ]; variables = { NIX_CI_CACHE_STRATEGY = "runner"; - BASH = toString pkgs.bash; + #BASH = toString pkgs.bash; TEST = "work"; }; }; @@ -273,7 +273,7 @@ ]; variables = { SAMPLE = "working"; - HELLO = toString pkgs.hello; + #HELLO = toString pkgs.hello; NIX_CI_CACHE_STRATEGY = "runner"; }; }; From 8336e6d0839fa4b22ad0a2035da5280bfb97a0ce Mon Sep 17 00:00:00 2001 From: Skryta Istota <6970043-hidden-being@users.noreply.gitlab.com> Date: Wed, 3 Dec 2025 16:55:05 +0100 Subject: [PATCH 7/9] 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. --- tests/modules_test.nix | 47 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/tests/modules_test.nix b/tests/modules_test.nix index e134293..e56ad34 100644 --- a/tests/modules_test.nix +++ b/tests/modules_test.nix @@ -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,16 +72,36 @@ 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 = simplePipeline.packages."gitlab-ci:pipeline:test:job-deps:test"; + in + # sh + '' + ${ntlib.helpers.path [pkgs.gnugrep]} + ${ntlib.helpers.scriptHelpers} + assert_file_contains ${package} ':$PATH' + assert_file_contains ${package} 'HELLO="/nix/store/.*-hello-.*"' + ''; + } + { + name = "do not fail on store paths"; type = "script"; script = let package = (cilib.mkCI { pipelines."test" = { - variables.EXAMPLE = "${pkgs.hello}"; + variables = { + HELLO = "${pkgs.hello}"; + SAMPLE = "empty"; + }; }; }).packages."gitlab-ci:pipeline:test"; in @@ -74,7 +110,8 @@ ${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} '"HELLO":"/nix/store/.*-hello-.*"' + assert_file_contains ${package} '"SAMPLE":"empty"' ''; } ]; From c8f51c73eda5f0d2bcdd7c8f80769c67de94534d Mon Sep 17 00:00:00 2001 From: Skryta Istota <6970043-hidden-being@users.noreply.gitlab.com> Date: Wed, 3 Dec 2025 17:35:36 +0100 Subject: [PATCH 8/9] 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. --- lib/impl/modules/job.nix | 2 +- tests/modules_test.nix | 23 ----------------------- 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/lib/impl/modules/job.nix b/lib/impl/modules/job.nix index 295093d..1f99d5b 100644 --- a/lib/impl/modules/job.nix +++ b/lib/impl/modules/job.nix @@ -646,7 +646,7 @@ in rec { }; depsDrv = cilib.mkJobDeps { key = name; - job = config.finalConfig; + inherit job; nixConfig = config.nix; }; runnerDrv = cilib.mkJobRun { diff --git a/tests/modules_test.nix b/tests/modules_test.nix index e56ad34..0bd19c6 100644 --- a/tests/modules_test.nix +++ b/tests/modules_test.nix @@ -91,29 +91,6 @@ assert_file_contains ${package} 'HELLO="/nix/store/.*-hello-.*"' ''; } - { - name = "do not fail on store paths"; - type = "script"; - script = let - package = - (cilib.mkCI { - pipelines."test" = { - variables = { - HELLO = "${pkgs.hello}"; - SAMPLE = "empty"; - }; - }; - }).packages."gitlab-ci:pipeline:test"; - in - # sh - '' - ${ntlib.helpers.path [pkgs.gnugrep]} - ${ntlib.helpers.scriptHelpers} - assert_file_contains ${package} '[".pre",".post"]' - assert_file_contains ${package} '"HELLO":"/nix/store/.*-hello-.*"' - assert_file_contains ${package} '"SAMPLE":"empty"' - ''; - } ]; }; } From 65b90ecd653c8002a2a53792f5a9bafe8b8d857b Mon Sep 17 00:00:00 2001 From: Skryta Istota <6970043-hidden-being@users.noreply.gitlab.com> Date: Wed, 3 Dec 2025 18:35:36 +0100 Subject: [PATCH 9/9] 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. --- tests/cilib_test.nix | 157 +++++++------------------------------------ 1 file changed, 26 insertions(+), 131 deletions(-) diff --git a/tests/cilib_test.nix b/tests/cilib_test.nix index 1661c8c..3b76fb8 100644 --- a/tests/cilib_test.nix +++ b/tests/cilib_test.nix @@ -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,30 +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; @@ -123,34 +102,17 @@ after_script = ["finalize_nix_ci"]; before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""]; cache = [ - { - name = "some"; - paths = ["this"]; - } { 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; @@ -199,26 +161,12 @@ ''; } { - 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 = @@ -227,85 +175,32 @@ 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 { 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; }