diff --git a/modules/all.nix b/modules/all.nix index a7d45b0..ace357e 100644 --- a/modules/all.nix +++ b/modules/all.nix @@ -64,8 +64,8 @@ in { submodule.config.kubernetes.objects ) config.submodules.instances); - docker.push = mkMerge (mapAttrsToList (_: submodule: - submodule.config.docker.push + docker.export = mkMerge (mapAttrsToList (_: submodule: + submodule.config.docker.export ) config.submodules.instances); }; } diff --git a/modules/docker/default.nix b/modules/docker/default.nix index dba8382..ffff7f4 100644 --- a/modules/docker/default.nix +++ b/modules/docker/default.nix @@ -2,10 +2,13 @@ with lib; -{ +let + globalConfig = config; +in { options.docker.registry.url = mkOption { description = "Default registry url where images are published"; type = types.str; + default = ""; }; options.docker.images = mkOption { @@ -33,19 +36,28 @@ with lib; registry = mkOption { description = "Docker registry url where image is published"; type = types.str; - default = config.docker.registry.url; + default = globalConfig.docker.registry.url; + }; + + path = mkOption { + description = "Full docker image path"; + type = types.str; + default = + if config.registry != "" + then "${config.registry}/${config.name}:${config.tag}" + else "${config.name}:${config.tag}"; }; }; })); default = {}; }; - options.docker.push = mkOption { - description = "List of images to push"; + options.docker.export = mkOption { + description = "List of images to export"; type = types.listOf (types.package); default = []; }; - config.docker.push = mapAttrsToList (_: i: i.image) + config.docker.export = mapAttrsToList (_: i: i.image) (filterAttrs (_: i: i.registry != null)config.docker.images); } diff --git a/tests/all.nix b/tests/all.nix index 50d6c1e..8889899 100644 --- a/tests/all.nix +++ b/tests/all.nix @@ -5,7 +5,6 @@ with lib; let cfg = config.submodules.instances.test.config; deployment = cfg.kubernetes.api.deployments.nginx; - image = images.nginx; in { imports = [ kubenix.all @@ -20,6 +19,9 @@ in { } { message = "Version not propagated"; assertion = cfg.kubernetes.version == config.kubernetes.version; + } { + message = "docker image should be added to exported images"; + assertion = (head config.docker.export) == images.nginx; }]; testScript = '' $kube->waitUntilSucceeds("docker load < ${image}"); @@ -44,12 +46,14 @@ in { template.metadata.labels.app = "nginx"; template.spec = { containers.nginx = { - image = "${image.imageName}:${image.imageTag}"; + image = config.docker.images.nginx.path; imagePullPolicy = "Never"; }; }; }; }; + + docker.images.nginx.image = images.nginx; }; }];