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/nix/repo/ci.nix b/nix/repo/ci.nix index 157ede7..9ef9aac 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,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 '' diff --git a/tests/modules_test.nix b/tests/modules_test.nix index e134293..0bd19c6 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,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-.*"' ''; } ];