Merge pull request #31 from hercules-ci/fix-image-nixBuild-default

Fix image nix build default
This commit is contained in:
Robert Hensing 2019-03-29 09:04:53 +01:00 committed by GitHub
commit fbf57b4489
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 7 deletions

View file

@ -7,11 +7,13 @@ let
lib.filterAttrs filterFunction config.docker-compose.evaluatedServices
);
filterFunction = _serviceName: service:
service.config.image.nixBuild;
filterFunction = serviceName: service:
builtins.addErrorContext "while evaluating whether the service ${serviceName} defines an image"
service.config.image.nixBuild;
addDetails = _serviceName: service:
let
addDetails = serviceName: service:
builtins.addErrorContext "while evaluating the image for service ${serviceName}"
(let
inherit (service.config) build;
in {
image = build.image.outPath;
@ -20,7 +22,7 @@ let
if build.image.imageTag != ""
then build.image.imageTag
else lib.head (lib.strings.splitString "-" (baseNameOf build.image.outPath));
};
});
in
{
options = {

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, lib, config, options, ... }:
let
inherit (lib) types mkOption;
inherit (types) attrsOf listOf nullOr package str unspecified bool;
@ -32,6 +32,8 @@ let
done;
'';
};
priorityIsDefault = option: option.highestPrio >= (lib.mkDefault true).priority;
in
{
options = {
@ -58,8 +60,11 @@ in
Whether to build this image with Nixpkgs'
<code>dockerTools.buildLayeredImage</code>
and then load it with <code>docker load</code>.
By default, an image will be built with Nix unless <option>service.image</option>
is set. See also <option>image.name</option>, which defaults to
the service name.
'';
default = true;
};
image.name = mkOption {
type = str;
@ -111,5 +116,7 @@ in
service.image = lib.mkDefault "${config.build.imageName}:${config.build.imageTag}";
image.rawConfig.Cmd = config.image.command;
image.nixBuild = lib.mkDefault (priorityIsDefault options.service.image);
};
}