Skip to content

Commit

Permalink
Add separate properties for build.env.build and run.env
Browse files Browse the repository at this point in the history
Addresses fabric8io#386.

Note that it was not possible to use "env.run/build", which would have
matched well with other properties, because we already have the "env"
matcher (which would have matched env.run too, injecting bad
properties).
  • Loading branch information
stromnet committed Feb 12, 2018
1 parent 90977d2 commit 7263026
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ public enum ConfigKey {
ENTRYPOINT,
ENV,
ENV_PROPERTY_FILE,
ENV_BUILD("buildEnv"),
ENV_RUN("runEnv"),
EXPOSED_PROPERTY_KEY,
EXTRA_HOSTS,
FILTER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import io.fabric8.maven.docker.config.handler.ExternalConfigHandler;
import io.fabric8.maven.docker.util.EnvUtil;

import org.codehaus.plexus.util.CollectionUtils;
import static io.fabric8.maven.docker.config.handler.property.ConfigKey.*;
import static io.fabric8.maven.docker.util.EnvUtil.*;

Expand Down Expand Up @@ -84,7 +85,10 @@ private BuildImageConfiguration extractBuildConfiguration(String prefix, Propert
.optimise(withPrefix(prefix, OPTIMISE, properties))
.entryPoint(withPrefix(prefix, ENTRYPOINT, properties))
.assembly(extractAssembly(prefix, properties))
.env(mapWithPrefix(prefix, ENV, properties))
.env(CollectionUtils.mergeMaps(
mapWithPrefix(prefix, ENV_BUILD, properties),
mapWithPrefix(prefix, ENV, properties)
))
.args(mapWithPrefix(prefix, ARGS, properties))
.labels(mapWithPrefix(prefix,LABELS,properties))
.ports(extractPortValues(prefix, properties))
Expand Down Expand Up @@ -122,7 +126,10 @@ private RunImageConfiguration extractRunConfiguration(String prefix, Properties
.dnsSearch(listWithPrefix(prefix, DNS_SEARCH, properties))
.domainname(withPrefix(prefix, DOMAINNAME, properties))
.entrypoint(withPrefix(prefix, ENTRYPOINT, properties))
.env(mapWithPrefix(prefix, ENV, properties))
.env(CollectionUtils.mergeMaps(
mapWithPrefix(prefix, ENV_RUN, properties),
mapWithPrefix(prefix, ENV, properties)
))
.labels(mapWithPrefix(prefix,LABELS,properties))
.envPropertyFile(withPrefix(prefix, ENV_PROPERTY_FILE, properties))
.extraHosts(listWithPrefix(prefix, EXTRA_HOSTS, properties))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,57 @@ public void testEnvAndLabels() throws Exception {
}
}


@Test
public void testSpecificEnv() throws Exception {
List<ImageConfiguration> configs = resolveImage(
imageConfiguration,props(
"docker.from", "baase",
"docker.name","demo",
"docker.buildEnv.HOME", "/tmp",
"docker.runEnv.root.dir", "/bla"
));

assertEquals(1,configs.size());
ImageConfiguration calcConfig = configs.get(0);

Map<String, String> env;

env = calcConfig.getBuildConfiguration().getEnv();
assertEquals(1,env.size());
assertEquals("/tmp",env.get("HOME"));

env = calcConfig.getRunConfiguration().getEnv();
assertEquals(1,env.size());
assertEquals("/bla",env.get("root.dir"));
}

@Test
public void testMergedEnv() throws Exception {
List<ImageConfiguration> configs = resolveImage(
imageConfiguration,props(
"docker.from", "baase",
"docker.name","demo",
"docker.env.HOME", "/tmp",
"docker.buildEnv.HOME", "/var/tmp",
"docker.runEnv.root.dir", "/bla"
));

assertEquals(1,configs.size());
ImageConfiguration calcConfig = configs.get(0);

Map<String, String> env;

env = calcConfig.getBuildConfiguration().getEnv();
assertEquals(1,env.size());
assertEquals("/var/tmp",env.get("HOME"));

env = calcConfig.getRunConfiguration().getEnv();
assertEquals(2,env.size());
assertEquals("/tmp",env.get("HOME"));
assertEquals("/bla",env.get("root.dir"));
}

@Test
public void testAssembly() throws Exception {
List<ImageConfiguration> configs = resolveImage(imageConfiguration, props(getTestAssemblyData()));
Expand Down

0 comments on commit 7263026

Please sign in to comment.