diff --git a/CHANGELOG.md b/CHANGELOG.md index 44abc397bc..18c9ca505f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,8 +26,6 @@ After this we will switch probably to real [Semantic Versioning 2.0.0](http://se * Fix #1732: Correctly replacing template placeholders in helm chart * Fix #1734: Add logging during jib builds * Fix #1696: Fix put operations for ImageStreams in ApplyService -* Fix #1738: JibBuildConfiguration ignores BuildImageConfiguration.registry -* Fix #1737: Wrong Jib output directory in Maven multi-module build ### 4.3.0 (04-10-2019) * Updated custom-enricher sample diff --git a/core/src/main/java/io/fabric8/maven/core/service/kubernetes/JibBuildService.java b/core/src/main/java/io/fabric8/maven/core/service/kubernetes/JibBuildService.java index 128d84ea83..c11a3d5779 100644 --- a/core/src/main/java/io/fabric8/maven/core/service/kubernetes/JibBuildService.java +++ b/core/src/main/java/io/fabric8/maven/core/service/kubernetes/JibBuildService.java @@ -16,20 +16,19 @@ package io.fabric8.maven.core.service.kubernetes; import com.google.cloud.tools.jib.api.Credential; -import com.google.cloud.tools.jib.api.ImageFormat; -import com.google.cloud.tools.jib.api.InvalidImageReferenceException; -import com.google.cloud.tools.jib.api.JibContainer; -import com.google.cloud.tools.jib.api.RegistryException; import io.fabric8.maven.core.service.BuildService; import io.fabric8.maven.core.util.JibBuildServiceUtil; +import io.fabric8.maven.docker.config.Arguments; +import io.fabric8.maven.docker.config.BuildImageConfiguration; import io.fabric8.maven.docker.config.ImageConfiguration; import io.fabric8.maven.docker.util.DeepCopy; +import io.fabric8.maven.docker.util.ImageName; import io.fabric8.maven.docker.util.Logger; -import io.fabric8.maven.docker.util.MojoParameters; import java.nio.file.Path; +import java.util.List; +import java.util.Map; import java.util.Objects; -import java.util.concurrent.ExecutionException; public class JibBuildService implements BuildService { @@ -47,7 +46,23 @@ public JibBuildService (BuildServiceConfig config, Logger log) { @Override public void build(ImageConfiguration imageConfiguration) { try { - doJibBuild(JibBuildServiceUtil.getJibBuildConfiguration(config, imageConfiguration, log)); + BuildImageConfiguration buildImageConfiguration = imageConfiguration.getBuildConfiguration(); + List tags = buildImageConfiguration.getTags(); + + JibBuildService.JibBuildConfiguration jibBuildConfiguration; + String fullName = ""; + if (tags.size() > 0) { + for (String tag : tags) { + if (tag != null) { + fullName = new ImageName(imageConfiguration.getName(), tag).getFullName(); + } + } + } else { + fullName = new ImageName(imageConfiguration.getName(), null).getFullName(); + } + log.info("Image tagging successful!"); + jibBuildConfiguration = JibBuildServiceUtil.getJibBuildConfiguration(config, buildImageConfiguration, fullName, log); + JibBuildServiceUtil.buildImage(jibBuildConfiguration, log); } catch (Exception ex) { throw new UnsupportedOperationException(ex); } @@ -58,32 +73,31 @@ public void postProcess(BuildServiceConfig config) { } - public JibContainer doJibBuild(JibBuildService.JibBuildConfiguration jibBuildConfiguration) throws InvalidImageReferenceException, RegistryException, ExecutionException { - return JibBuildServiceUtil.buildImage(jibBuildConfiguration, log); - } - - public JibContainer doJibBuild(JibBuildService.JibBuildConfiguration jibBuildConfiguration, boolean isOfflineMode) throws InvalidImageReferenceException, RegistryException, ExecutionException { - return JibBuildServiceUtil.buildImage(jibBuildConfiguration, log, isOfflineMode); - } - public static class JibBuildConfiguration { - private ImageConfiguration imageConfiguration; - private ImageFormat imageFormat; + private Map envMap; private Credential credential; + private List ports; + + private String from; + + private String target; + private Path fatJarPath; + private Arguments entrypoint; + private String targetDir; private String outputDir; - private MojoParameters mojoParameters; - private JibBuildConfiguration() {} - public ImageConfiguration getImageConfiguration() { return imageConfiguration; } + public Arguments getEntryPoint() { + return entrypoint; + } public String getTargetDir() { return targetDir; @@ -93,19 +107,29 @@ public String getOutputDir() { return outputDir; } + public Map getEnvMap() { + return envMap; + } + public Credential getCredential() { return credential; } - public Path getFatJar() { - return fatJarPath; + public List getPorts() { + return ports; } - public ImageFormat getImageFormat() { - return imageFormat; + public String getFrom() { + return from; } - public MojoParameters getMojoParameters() { return mojoParameters; } + public String getTargetImage() { + return target; + } + + public Path getFatJar() { + return fatJarPath; + } public static class Builder { private final JibBuildConfiguration configutil; @@ -124,23 +148,33 @@ public Builder(JibBuildConfiguration that, Logger logger) { } } - public Builder mojoParameters(MojoParameters mojoParameters) { - configutil.mojoParameters = mojoParameters; + public Builder envMap(Map envMap) { + configutil.envMap = envMap; return this; } - public Builder imageConfiguration(ImageConfiguration imageConfiguration) { - configutil.imageConfiguration = imageConfiguration; + public Builder credential(Credential credential) { + configutil.credential = credential; return this; } - public Builder imageFormat(ImageFormat imageFormat) { - configutil.imageFormat = imageFormat; + public Builder ports(List ports) { + configutil.ports = ports; return this; } - public Builder credential(Credential credential) { - configutil.credential = credential; + public Builder from(String from) { + configutil.from = from; + return this; + } + + public Builder targetImage(String imageName) { + configutil.target = imageName; + return this; + } + + public Builder entrypoint(Arguments entrypoint) { + configutil.entrypoint = entrypoint; return this; } diff --git a/core/src/main/java/io/fabric8/maven/core/util/JibBuildServiceUtil.java b/core/src/main/java/io/fabric8/maven/core/util/JibBuildServiceUtil.java index 2e4ede1096..4880791cb4 100644 --- a/core/src/main/java/io/fabric8/maven/core/util/JibBuildServiceUtil.java +++ b/core/src/main/java/io/fabric8/maven/core/util/JibBuildServiceUtil.java @@ -19,7 +19,6 @@ import com.google.cloud.tools.jib.api.CacheDirectoryCreationException; import com.google.cloud.tools.jib.api.Containerizer; import com.google.cloud.tools.jib.api.Credential; -import com.google.cloud.tools.jib.api.ImageFormat; import com.google.cloud.tools.jib.api.ImageReference; import com.google.cloud.tools.jib.api.InvalidImageReferenceException; import com.google.cloud.tools.jib.api.Jib; @@ -43,21 +42,18 @@ import io.fabric8.maven.core.service.kubernetes.JibBuildService; import io.fabric8.maven.docker.access.AuthConfig; import io.fabric8.maven.docker.config.BuildImageConfiguration; -import io.fabric8.maven.docker.config.ImageConfiguration; import io.fabric8.maven.docker.service.RegistryService; import io.fabric8.maven.docker.util.EnvUtil; -import io.fabric8.maven.docker.util.ImageName; import io.fabric8.maven.docker.util.Logger; -import io.fabric8.maven.docker.util.MojoParameters; import org.apache.maven.plugin.MojoExecutionException; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; -import java.time.Instant; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Properties; +import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutionException; @@ -70,77 +66,103 @@ private JibBuildServiceUtil() {} private static final String DEFAULT_JAR_NAME = "/app.jar"; private static final String DEFAULT_USER_NAME = "fabric8/"; - public static final String FABRIC8_GENERATOR_NAME = "fabric8.generator.name"; - public static final String FABRIC8_GENERATOR_REGISTRY = "fabric8.generator.registry"; - public static final String FABRIC8_GENERATOR_FROM = "fabric8.generator.from"; private static ConsoleLogger consoleLogger; /** * Builds a container image using JIB - * @param buildConfiguration Jib build configuration - * @param log logger object + * @param buildConfiguration + * @param log * @throws InvalidImageReferenceException */ - public static JibContainer buildImage(JibBuildService.JibBuildConfiguration buildConfiguration, Logger log) throws InvalidImageReferenceException, RegistryException, ExecutionException { - return buildImage(buildConfiguration, log, false); - } + public static void buildImage(JibBuildService.JibBuildConfiguration buildConfiguration, Logger log) throws InvalidImageReferenceException { - public static JibContainer buildImage(JibBuildService.JibBuildConfiguration buildConfiguration, Logger log, boolean isOfflineMode) throws InvalidImageReferenceException, RegistryException, ExecutionException { - ImageConfiguration imageConfiguration = buildConfiguration.getImageConfiguration(); + String fromImage = buildConfiguration.getFrom(); + String targetImage = buildConfiguration.getTargetImage(); Credential credential = buildConfiguration.getCredential(); - String outputDir = buildConfiguration.getOutputDir(); + Map envMap = buildConfiguration.getEnvMap(); + List portList = buildConfiguration.getPorts(); + Set portSet = getPortSet(portList); + String outputDir = buildConfiguration.getOutputDir(); String targetDir = buildConfiguration.getTargetDir(); Path fatJar = buildConfiguration.getFatJar(); - ImageFormat imageFormat = buildConfiguration.getImageFormat() != null ? buildConfiguration.getImageFormat() : ImageFormat.Docker; - return buildImage(imageConfiguration, buildConfiguration.getMojoParameters(), imageFormat, credential, fatJar, targetDir, outputDir, log, isOfflineMode); + List entrypointList = new ArrayList<>(); + if(buildConfiguration.getEntryPoint() != null) { + entrypointList = buildConfiguration.getEntryPoint().asStrings(); + } + + buildImage(fromImage, targetImage, envMap, credential, portSet, fatJar, entrypointList, targetDir, outputDir, log); } /** * Builds a container image using Jib from all the following parameters: * - * @param imageConfiguration Image Configuration - * @param mojoParameters Mojo parameters - * @param credential login credentials - * @param fatJar path to fat jar - * @param targetDir target directory - * @param outputDir output directory - * @param log log object - * @param isOfflineMode whether to build in offline mode or not. - * @return returns jib container - * + * @param baseImage + * @param targetImage + * @param envMap + * @param credential + * @param portSet + * @param fatJar + * @param entrypointList + * @param targetDir + * @param outputDir + * @param log + * @return * @throws InvalidImageReferenceException */ - protected static JibContainer buildImage(ImageConfiguration imageConfiguration, MojoParameters mojoParameters, ImageFormat imageFormat, Credential credential, Path fatJar, String targetDir, String outputDir, Logger log, boolean isOfflineMode) throws InvalidImageReferenceException, RegistryException, ExecutionException { - String targetImage = getPropertyFromMojoParameter(mojoParameters, FABRIC8_GENERATOR_NAME) != null ? - getPropertyFromMojoParameter(mojoParameters, FABRIC8_GENERATOR_NAME) : imageConfiguration.getName(); + protected static JibContainer buildImage(String baseImage, String targetImage, Map envMap, Credential credential, Set portSet, Path fatJar, List entrypointList, String targetDir, String outputDir, Logger log) throws InvalidImageReferenceException { + String username = ""; + String password = ""; + + JibContainerBuilder contBuild = Jib.from(baseImage); + + if (envMap != null) { + contBuild = contBuild.setEnvironment(envMap); + } + + if (portSet != null) { + contBuild = contBuild.setExposedPorts(portSet); + } + + if (fatJar != null) { + String fatJarName = fatJar.getFileName().toString(); + String jarPath = targetDir + "/" + (fatJarName.isEmpty() ? DEFAULT_JAR_NAME: fatJarName); + contBuild = contBuild + .addLayer(LayerConfiguration.builder().addEntry(fatJar, AbsoluteUnixPath.get(jarPath)).build()); + } + + if(!entrypointList.isEmpty()) { + contBuild = contBuild.setEntrypoint(entrypointList); + } + + if (credential != null) { + username = credential.getUsername(); + password = credential.getPassword(); - JibContainerBuilder containerBuilder = getContainerBuilderFromImageConfiguration(imageConfiguration, mojoParameters); - containerBuilder = getJibContainerBuilderFromFatJarPath(fatJar, targetDir, containerBuilder); - containerBuilder.setFormat(imageFormat); + if (targetImage.contains(DEFAULT_USER_NAME)) { + targetImage = targetImage.replaceFirst(DEFAULT_USER_NAME, username + "/"); + } + } + RegistryImage registryImage = RegistryImage.named(targetImage).addCredential(username, password); String imageTarName = ImageReference.parse(targetImage).getRepository().concat(".tar"); TarImage tarImage = TarImage.named(targetImage).saveTo(Paths.get(outputDir + "/" + imageTarName)); - RegistryImage registryImage = getRegistryImage(imageConfiguration, mojoParameters, credential); - try { - JibContainer jibContainer; - if (Boolean.FALSE.equals(isOfflineMode)) { - jibContainer = buildContainer(containerBuilder, registryImage, log); - } else { - jibContainer = buildContainer(containerBuilder, tarImage, log, isOfflineMode); - } + JibContainer jibContainer = buildContainer(contBuild, registryImage, log); log.info("Image %s successfully built and pushed.", targetImage); return jibContainer; } catch (RegistryException re) { + log.warn("Registry Exception occurred : %s", re.getMessage()); + log.warn("Credentials are probably either not configured or are incorrect."); log.info("Building Image Tarball at %s.", imageTarName); - buildContainer(containerBuilder, tarImage, log, false); + JibContainer jibContainer = buildContainer(contBuild, tarImage, log, false); log.info(" %s successfully built.", Paths.get(outputDir + "/" + imageTarName)); - throw new RegistryException(re); + return jibContainer; } catch (ExecutionException e) { - buildContainer(containerBuilder, tarImage, log, true); + log.warn("Can't connect to the remote registry host: %s", e.getMessage()); + JibContainer jibContainer = buildContainer(contBuild, tarImage, log, true); log.info("%s successfully built.", Paths.get(outputDir + "/" + imageTarName)); - throw new ExecutionException(e); + return jibContainer; } } @@ -155,18 +177,15 @@ public static JibContainer buildContainer(JibContainerBuilder jibContainerBuilde throw new IllegalStateException(ex); } } - public static JibContainer buildContainer(JibContainerBuilder jibContainerBuilder, RegistryImage image,Logger logger) throws RegistryException, ExecutionException { try { consoleLogger = getConsoleLogger(logger); - return jibContainerBuilder - .containerize(Containerizer.to(image) - .setAllowInsecureRegistries(true) - .addEventHandler(LogEvent.class, JibBuildServiceUtil::log) - .addEventHandler( + return jibContainerBuilder.containerize(Containerizer.to(image) + .addEventHandler(LogEvent.class, JibBuildServiceUtil::log) + .addEventHandler( TimerEvent.class, new TimerEventHandler(message -> consoleLogger.log(LogEvent.Level.DEBUG, message))) - .addEventHandler( + .addEventHandler( ProgressEvent.class, new ProgressEventHandler( update -> @@ -196,10 +215,10 @@ public static ConsoleLogger getConsoleLogger(Logger logger) { return consoleLoggerBuilder.build(); } - public static JibBuildService.JibBuildConfiguration getJibBuildConfiguration(BuildService.BuildServiceConfig config, ImageConfiguration imageConfiguration, Logger log) throws MojoExecutionException { + public static JibBuildService.JibBuildConfiguration getJibBuildConfiguration(BuildService.BuildServiceConfig config, BuildImageConfiguration buildImageConfiguration, String fullImageName, Logger log) throws MojoExecutionException { + io.fabric8.maven.docker.service.BuildService.BuildContext dockerBuildContext = config.getDockerBuildContext(); RegistryService.RegistryConfig registryConfig = dockerBuildContext.getRegistryConfig(); - BuildImageConfiguration buildImageConfiguration = imageConfiguration.getBuildConfiguration(); String targetDir = buildImageConfiguration.getAssemblyConfiguration().getTargetDir(); @@ -213,13 +232,14 @@ public static JibBuildService.JibBuildConfiguration getJibBuildConfiguration(Bui .createAuthConfig(true, true, registryConfig.getAuthConfig(), registryConfig.getSettings(), null, registryConfig.getRegistry()); - JibBuildService.JibBuildConfiguration.Builder jibBuildConfigurationBuilder = new JibBuildService.JibBuildConfiguration.Builder(log) - .imageConfiguration(imageConfiguration) - .mojoParameters(config.getDockerMojoParameters()) - .imageFormat(ImageFormat.Docker) - .targetDir(targetDir) - .outputDir(outputDir) - .buildDirectory(config.getBuildDirectory()); + JibBuildService.JibBuildConfiguration.Builder jibBuildConfigurationBuilder = new JibBuildService.JibBuildConfiguration.Builder(log).from(buildImageConfiguration.getFrom()) + .envMap(buildImageConfiguration.getEnv()) + .ports(buildImageConfiguration.getPorts()) + .entrypoint(buildImageConfiguration.getEntryPoint()) + .targetImage(fullImageName) + .targetDir(targetDir) + .outputDir(outputDir) + .buildDirectory(config.getBuildDirectory()); if(authConfig != null) { jibBuildConfigurationBuilder.credential(Credential.from(authConfig.getUsername(), authConfig.getPassword())); } @@ -227,91 +247,6 @@ public static JibBuildService.JibBuildConfiguration getJibBuildConfiguration(Bui return jibBuildConfigurationBuilder.build(); } - private static JibContainerBuilder getContainerBuilderFromImageConfiguration(ImageConfiguration imageConfiguration, MojoParameters mojoParameters) throws InvalidImageReferenceException { - if (imageConfiguration.getBuildConfiguration() == null) { - return null; - } - - BuildImageConfiguration buildImageConfiguration = imageConfiguration.getBuildConfiguration(); - JibContainerBuilder jibContainerBuilder = Jib.from(getPropertyFromMojoParameter(mojoParameters, FABRIC8_GENERATOR_FROM) != null ? - getPropertyFromMojoParameter(mojoParameters, FABRIC8_GENERATOR_FROM) : buildImageConfiguration.getFrom()); - if (buildImageConfiguration.getEnv() != null && !buildImageConfiguration.getEnv().isEmpty()) { - jibContainerBuilder.setEnvironment(buildImageConfiguration.getEnv()); - } - - if (buildImageConfiguration.getPorts() != null && !buildImageConfiguration.getPorts().isEmpty()) { - jibContainerBuilder.setExposedPorts(getPortSet(buildImageConfiguration.getPorts())); - } - - if (buildImageConfiguration.getLabels() != null && !buildImageConfiguration.getLabels().isEmpty()) { - jibContainerBuilder.setLabels(buildImageConfiguration.getLabels()); - } - - if (buildImageConfiguration.getEntryPoint() != null) { - jibContainerBuilder.setEntrypoint(buildImageConfiguration.getEntryPoint().asStrings()); - } - - if (buildImageConfiguration.getWorkdir() != null) { - jibContainerBuilder.setWorkingDirectory(AbsoluteUnixPath.get(buildImageConfiguration.getWorkdir())); - } - - if (buildImageConfiguration.getUser() != null) { - jibContainerBuilder.setUser(buildImageConfiguration.getUser()); - } - - if (buildImageConfiguration.getVolumes() != null) { - buildImageConfiguration.getVolumes() - .forEach(volumePath -> jibContainerBuilder.addVolume(AbsoluteUnixPath.get(volumePath))); - } - - jibContainerBuilder.setCreationTime(Instant.now()); - return jibContainerBuilder; - } - - private static JibContainerBuilder getJibContainerBuilderFromFatJarPath(Path fatJar, String targetDir, JibContainerBuilder containerBuilder) { - if (fatJar != null) { - String fatJarName = fatJar.getFileName().toString(); - String jarPath = targetDir + "/" + (fatJarName.isEmpty() ? DEFAULT_JAR_NAME: fatJarName); - containerBuilder = containerBuilder - .addLayer(LayerConfiguration.builder().addEntry(fatJar, AbsoluteUnixPath.get(jarPath)).build()); - } - return containerBuilder; - } - - private static RegistryImage getRegistryImage(ImageConfiguration imageConfiguration, MojoParameters mojoParameters, Credential credential) throws InvalidImageReferenceException { - String username = "", password = ""; - String targetImage = imageConfiguration.getName(); - ImageReference imageReference = ImageReference.parse(targetImage); - - if (imageConfiguration.getBuildConfiguration().getTags() != null) { - // Pick first not null tag - String tag = null; - for (String currentTag : imageConfiguration.getBuildConfiguration().getTags()) { - if (currentTag != null) { - tag = currentTag; - break; - } - } - targetImage = new ImageName(imageConfiguration.getName(), tag).getFullName(); - } - - if (credential != null) { - username = credential.getUsername(); - password = credential.getPassword(); - - if (targetImage.contains(DEFAULT_USER_NAME)) { - targetImage = targetImage.replaceFirst(DEFAULT_USER_NAME, username + "/"); - } - } - - String registry = getPropertyFromMojoParameter(mojoParameters, FABRIC8_GENERATOR_REGISTRY) != null ? - getPropertyFromMojoParameter(mojoParameters, FABRIC8_GENERATOR_REGISTRY) : imageConfiguration.getRegistry(); - if (registry != null) { - imageReference = ImageReference.parse(new ImageName(targetImage).getFullName(registry)); - } - - return RegistryImage.named(imageReference).addCredential(username, password); - } private static Set getPortSet(List ports) { @@ -323,15 +258,6 @@ private static Set getPortSet(List ports) { return portSet; } - private static String getPropertyFromMojoParameter(MojoParameters mojoParameters, String propertyName) { - if (mojoParameters != null && mojoParameters.getProject() != null) { - Properties properties = mojoParameters.getProject().getProperties(); - if (properties.get(propertyName) != null) - return properties.get(propertyName).toString(); - } - return null; - } - public static Path getFatJar(String buildDir, Logger log) { FatJarDetector fatJarDetector = new FatJarDetector(buildDir); try { @@ -339,8 +265,10 @@ public static Path getFatJar(String buildDir, Logger log) { if(result != null) { return result.getArchiveFile().toPath(); } + } catch (MojoExecutionException e) { - throw new UnsupportedOperationException(e); + log.error("MOJO Execution exception occurred: %s", e); + throw new UnsupportedOperationException(); } return null; } diff --git a/core/src/test/java/io/fabric8/maven/core/service/kubernetes/JibBuildServiceTest.java b/core/src/test/java/io/fabric8/maven/core/service/kubernetes/JibBuildServiceTest.java index 245c24f6f4..379076ed31 100644 --- a/core/src/test/java/io/fabric8/maven/core/service/kubernetes/JibBuildServiceTest.java +++ b/core/src/test/java/io/fabric8/maven/core/service/kubernetes/JibBuildServiceTest.java @@ -15,8 +15,6 @@ */ package io.fabric8.maven.core.service.kubernetes; -import com.google.cloud.tools.jib.api.JibContainer; -import com.google.cloud.tools.jib.api.RegistryException; import io.fabric8.maven.core.util.JibBuildServiceUtil; import io.fabric8.maven.docker.config.AssemblyConfiguration; import io.fabric8.maven.docker.config.BuildImageConfiguration; @@ -35,8 +33,6 @@ import java.util.ArrayList; import java.util.HashMap; -import static org.junit.Assert.assertNotNull; - public class JibBuildServiceTest { @Tested @@ -51,74 +47,38 @@ public class JibBuildServiceTest { @Mocked private io.fabric8.maven.core.service.BuildService.BuildServiceConfig config; + @Mocked + private ImageConfiguration imageConfiguration; @Mocked private AuthConfigFactory authConfigFactory; - MojoParameters mojoParameters = new MojoParameters(null, new MavenProject(), null, null, null, null, null, "target/docker", null); - final String imageName = "image-name"; - - AssemblyConfiguration assemblyConfiguration = new AssemblyConfiguration.Builder() - .targetDir("/deployments") - .build(); - - BuildImageConfiguration buildImageConfiguration = new BuildImageConfiguration.Builder() - .from("fabric8/java-centos-openjdk8-jdk:1.5") - .env(new HashMap() {{ - put("john", "doe"); - put("foo", "bar"); - }}) - .ports(new ArrayList() {{ - add("80"); - add("443"); - }}) - .entryPoint(null) - .assembly(assemblyConfiguration) - .build(); - - ImageConfiguration imageConfiguration = new ImageConfiguration.Builder() - .name(imageName) - .registry("quay.io") - .buildConfig(buildImageConfiguration) - .build(); - @Test - public void testSuccessfulBuildOffline() throws Exception { - - final BuildService.BuildContext dockerBuildContext = new BuildService.BuildContext.Builder() - .registryConfig(new RegistryService.RegistryConfig.Builder() - .authConfigFactory(authConfigFactory) - .build()) - .build(); - - new Expectations() {{ - imageConfiguration.getBuildConfiguration(); - result = buildImageConfiguration; - - imageConfiguration.getName(); - result = imageName; - - config.getDockerBuildContext(); - result = dockerBuildContext; - - config.getDockerMojoParameters(); - result = mojoParameters; + public void testSuccessfulBuild() throws Exception { - config.getBuildDirectory(); - result = "target/test-files/jib-build-service"; + //Preparation Code For Testing The Class - }}; + MojoParameters mojoParameters = new MojoParameters(null, new MavenProject(), null, null, null, null, null, "target/docker", null); + final String imageName = "image-name"; - //Code To Be Tested - jibBuildService = new JibBuildService(config, logger); - JibContainer jibContainer = jibBuildService.doJibBuild(JibBuildServiceUtil.getJibBuildConfiguration(config, imageConfiguration, logger), true); + AssemblyConfiguration assemblyConfiguration = new AssemblyConfiguration.Builder() + .targetDir("/deployments") + .build(); - assertNotNull(jibContainer); - assertNotNull(jibContainer.getImageId()); - } + BuildImageConfiguration buildImageConfiguration = new BuildImageConfiguration.Builder() + .from("fabric8/java-centos-openjdk8-jdk:1.5") + .env(new HashMap() {{ + put("john", "doe"); + put("foo", "bar"); + }}) + .ports(new ArrayList() {{ + add("80"); + add("443"); + }}) + .entryPoint(null) + .assembly(assemblyConfiguration) + .build(); - @Test(expected = RegistryException.class) - public void testSuccessfulBuild() throws Exception { final BuildService.BuildContext dockerBuildContext = new BuildService.BuildContext.Builder() .registryConfig(new RegistryService.RegistryConfig.Builder() .authConfigFactory(authConfigFactory) @@ -145,9 +105,6 @@ public void testSuccessfulBuild() throws Exception { //Code To Be Tested jibBuildService = new JibBuildService(config, logger); - JibContainer jibContainer = jibBuildService.doJibBuild(JibBuildServiceUtil.getJibBuildConfiguration(config, imageConfiguration, logger), false); - - assertNotNull(jibContainer); - assertNotNull(jibContainer.getImageId()); + jibBuildService.build(imageConfiguration); } } \ No newline at end of file diff --git a/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java b/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java index 703160ef0d..a6528aebc0 100644 --- a/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java +++ b/generator/api/src/main/java/io/fabric8/maven/generator/api/support/BaseGenerator.java @@ -15,13 +15,19 @@ */ package io.fabric8.maven.generator.api.support; +import java.io.File; +import java.nio.file.Path; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import io.fabric8.maven.core.config.OpenShiftBuildStrategy; import io.fabric8.maven.core.config.RuntimeMode; +import io.fabric8.maven.core.model.Dependency; +import io.fabric8.maven.core.model.GroupArtifactVersion; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.PrefixedLogger; import io.fabric8.maven.docker.config.BuildImageConfiguration; @@ -31,6 +37,7 @@ import io.fabric8.maven.generator.api.Generator; import io.fabric8.maven.generator.api.GeneratorConfig; import io.fabric8.maven.generator.api.GeneratorContext; +import org.apache.maven.artifact.Artifact; import org.apache.maven.project.MavenProject; import org.apache.maven.shared.utils.StringUtils; @@ -40,11 +47,6 @@ */ abstract public class BaseGenerator implements Generator { - public static final String FABRIC8_GENERATOR_NAME = "fabric8.generator.name"; - public static final String FABRIC8_GENERATOR_REGISTRY = "fabric8.generator.registry"; - public static final String FABRIC8_GENERATOR_ALIAS = "fabric8.generator.alias"; - public static final String FABRIC8_GENERATOR_FROM = "fabric8.generator.from"; - public static final String FABRIC8_GENERATOR_FROM_MODE = "fabric8.generator.fromMode"; private final GeneratorContext context; private final String name; private final GeneratorConfig config; @@ -107,7 +109,7 @@ protected String getConfig(Configs.Key key, String defaultVal) { // Get 'from' as configured without any default and image stream tag handling protected String getFromAsConfigured() { - return getConfigWithFallback(Config.from, FABRIC8_GENERATOR_FROM, null); + return getConfigWithFallback(Config.from, "fabric8.generator.from", null); } /** @@ -116,8 +118,8 @@ protected String getFromAsConfigured() { * @param builder for the build image configuration to add the from to. */ protected void addFrom(BuildImageConfiguration.Builder builder) { - String fromMode = getConfigWithFallback(Config.fromMode, FABRIC8_GENERATOR_FROM_MODE, getFromModeDefault(context.getRuntimeMode())); - String from = getConfigWithFallback(Config.from, FABRIC8_GENERATOR_FROM, null); + String fromMode = getConfigWithFallback(Config.fromMode, "fabric8.generator.fromMode", getFromModeDefault(context.getRuntimeMode())); + String from = getConfigWithFallback(Config.from, "fabric8.generator.from", null); if ("docker".equalsIgnoreCase(fromMode)) { String fromImage = from; if (fromImage == null) { @@ -174,9 +176,9 @@ private String getFromModeDefault(RuntimeMode mode) { */ protected String getImageName() { if (RuntimeMode.isOpenShiftMode(getProject().getProperties())) { - return getConfigWithFallback(Config.name, FABRIC8_GENERATOR_NAME, "%a:%l"); + return getConfigWithFallback(Config.name, "fabric8.generator.name", "%a:%l"); } else { - return getConfigWithFallback(Config.name, FABRIC8_GENERATOR_NAME, "%g/%a:%l"); + return getConfigWithFallback(Config.name, "fabric8.generator.name", "%g/%a:%l"); } } @@ -188,7 +190,7 @@ protected String getImageName() { */ protected String getRegistry() { if (!RuntimeMode.isOpenShiftMode(getProject().getProperties())) { - return getConfigWithFallback(Config.registry, FABRIC8_GENERATOR_REGISTRY, null); + return getConfigWithFallback(Config.registry, "fabric8.generator.registry", null); } return null; @@ -199,7 +201,7 @@ protected String getRegistry() { * @return an alias which is never null; */ protected String getAlias() { - return getConfigWithFallback(Config.alias, FABRIC8_GENERATOR_ALIAS, getName()); + return getConfigWithFallback(Config.alias, "fabric8.generator.alias", getName()); } protected boolean shouldAddImageConfiguration(List configs) {