nix-gitlab-ci/lib/impl/jobPatched.nix
Skryta Istota 0f9d0aae60
fix(jobPatched) Fixed some attributes not being passed into ci
Fixed modifying continuous integration settings attributes only when the job is configured via nix,
plus improved tests for this functionality.
2025-11-30 12:55:22 +01:00

38 lines
1 KiB
Nix

{
lib,
helpers,
}: let
inherit (lib) toList optionalAttrs optional;
inherit (helpers) prependToBeforeScript appendToAfterScript;
in
{
key,
job,
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;
})