diff --git a/BUILDING.md b/BUILDING.md index 0ed3f048be..0baedc232d 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -16,6 +16,9 @@ The affected profiles will ["delombok"](http://anthonywhitford.com/lombok.maven/ the source code before generating the documentation in order to spread the "condensed" javadoc declared in the Lombok affected fields. +## Integration tests +Apart from tests that are available in this repository, there is a separate repository with intergration tests [available here](https://github.com/jkubeio/jkube-integration-tests). + ## Release process Release process has to be performed in a project fork. diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java index 50192700d7..728b456d10 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java @@ -25,7 +25,7 @@ public class KubernetesHelmPushTask extends AbstractJKubeTask { @Inject public KubernetesHelmPushTask(Class extensionClass) { super(extensionClass); - setDescription("Upload a helm chart to specified helm repository."); + setDescription("Upload a Helm chart to specified Helm repository."); } @Override @@ -37,10 +37,10 @@ public void run() { HelmConfig helm = initHelmConfig(kubernetesExtension.getDefaultHelmType(), kubernetesExtension.javaProject, kubernetesExtension.getKubernetesTemplateOrDefault(), kubernetesExtension.helm).build(); - helm = initHelmPushConfig(helm, kubernetesExtension.javaProject); + initHelmPushConfig(helm, kubernetesExtension.javaProject); jKubeServiceHub.getHelmService().uploadHelmChart(helm); } catch (Exception exp) { - kitLogger.error("Error performing helm push", exp); + kitLogger.error("Error performing Helm push", exp); throw new IllegalStateException(exp.getMessage(), exp); } } diff --git a/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmConfig.java b/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmConfig.java index a35a3ac841..76cb73034c 100644 --- a/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmConfig.java +++ b/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmConfig.java @@ -25,6 +25,7 @@ import org.eclipse.jkube.kit.common.Maintainer; import java.io.File; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -67,7 +68,8 @@ public class HelmConfig { private String outputDir; private String tarballOutputDir; private String tarFileClassifier; - private List generatedChartListeners; + @Builder.Default + private List generatedChartListeners = new ArrayList<>(); private HelmRepository stableRepository; private HelmRepository snapshotRepository; private String security; diff --git a/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUtil.java b/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUtil.java index d29d669616..3aa06d2fb3 100644 --- a/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUtil.java +++ b/jkube-kit/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUtil.java @@ -119,16 +119,11 @@ public static HelmConfig.HelmConfigBuilder initHelmConfig( return helmConfig.toBuilder(); } - public static HelmConfig initHelmPushConfig(HelmConfig helmConfig, JavaProject project) { - if (helmConfig == null) { - helmConfig = new HelmConfig(); - } - + public static void initHelmPushConfig(HelmConfig helmConfig, JavaProject project) { helmConfig.setStableRepository(initHelmRepository(helmConfig.getStableRepository(), project, STABLE_REPOSITORY)); helmConfig.setSnapshotRepository(initHelmRepository(helmConfig.getSnapshotRepository(), project, SNAPSHOT_REPOSITORY)); helmConfig.setSecurity(resolveFromPropertyOrDefault(PROPERTY_SECURITY, project, helmConfig::getSecurity, () -> DEFAULT_SECURITY)); - return helmConfig; } static HelmRepository initHelmRepository(HelmRepository helmRepository, JavaProject project, String repositoryType) { diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractHelmMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractHelmMojo.java new file mode 100644 index 0000000000..fb26d908db --- /dev/null +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractHelmMojo.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2019 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at: + * + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.jkube.maven.plugin.mojo.build; + +import static org.eclipse.jkube.kit.resource.helm.HelmServiceUtil.initHelmConfig; + +import java.io.File; +import java.io.IOException; + +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugins.annotations.Parameter; +import org.eclipse.jkube.kit.resource.helm.HelmConfig; + +public abstract class AbstractHelmMojo extends AbstractJKubeMojo { + + /** + * One of: + * + */ + @Parameter(property = "jkube.kubernetesTemplate", defaultValue = "${basedir}/target/classes/META-INF/jkube/kubernetes") + File kubernetesTemplate; + + @Parameter + HelmConfig helm; + + @Override + public void init() throws MojoFailureException { + super.init(); + + try { + helm = initHelmConfig(getDefaultHelmType(), javaProject, getKubernetesTemplate(), helm).build(); + } catch (IOException e) { + throw new MojoFailureException(e.getMessage(), e); + } + } + + protected File getKubernetesTemplate() { + return kubernetesTemplate; + } + + protected HelmConfig.HelmType getDefaultHelmType() { + return HelmConfig.HelmType.KUBERNETES; + } + + protected HelmConfig getHelm() { + return helm; + } +} diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java index 77ae1e3bb4..b4fb6c83f1 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java @@ -154,22 +154,22 @@ public abstract class AbstractJKubeMojo extends AbstractMojo implements KitLogge @Override public void execute() throws MojoExecutionException, MojoFailureException { - try { - init(); - if (shouldSkip()) { - log.info("`%s` goal is skipped.", mojoExecution.getMojoDescriptor().getFullGoalName()); - return; - } - executeInternal(); - } catch (DependencyResolutionRequiredException e) { - throw new MojoFailureException(e.getMessage()); + init(); + if (shouldSkip()) { + log.info("`%s` goal is skipped.", mojoExecution.getMojoDescriptor().getFullGoalName()); + return; } + executeInternal(); } - protected void init() throws DependencyResolutionRequiredException { + protected void init() throws MojoFailureException { log = createLogger(null); clusterAccess = new ClusterAccess(initClusterConfiguration()); - javaProject = MavenUtil.convertMavenProjectToJKubeProject(project, session); + try { + javaProject = MavenUtil.convertMavenProjectToJKubeProject(project, session); + } catch (DependencyResolutionRequiredException e) { + throw new MojoFailureException(e.getMessage()); + } jkubeServiceHub = initJKubeServiceHubBuilder(javaProject).build(); resources = updateResourceConfigNamespace(namespace, resources); } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmLintMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmLintMojo.java index 8b54d272a5..ab07a37a6e 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmLintMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmLintMojo.java @@ -18,22 +18,11 @@ import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.ResolutionScope; -import java.io.IOException; - -import static org.eclipse.jkube.kit.resource.helm.HelmServiceUtil.initHelmConfig; - @Mojo(name = "helm-lint", defaultPhase = LifecyclePhase.INTEGRATION_TEST, requiresDependencyResolution = ResolutionScope.COMPILE) -public class HelmLintMojo extends HelmMojo { +public class HelmLintMojo extends AbstractHelmMojo { @Override public void executeInternal() throws MojoExecutionException { - try { - helm = initHelmConfig(getDefaultHelmType(), javaProject, getKubernetesTemplate(), helm) - .build(); - jkubeServiceHub.getHelmService().lint(helm); - } catch (IOException e) { - throw new MojoExecutionException(e.getMessage(), e); - } - + jkubeServiceHub.getHelmService().lint(getHelm()); } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java index 0059caed9e..040f4a2a69 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java @@ -15,81 +15,64 @@ import java.io.File; import java.io.IOException; -import java.util.Collections; - -import org.eclipse.jkube.kit.resource.helm.HelmConfig; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProjectHelper; - -import static org.eclipse.jkube.kit.resource.helm.HelmServiceUtil.initHelmConfig; +import org.eclipse.jkube.kit.resource.helm.GeneratedChartListener; +import org.eclipse.jkube.kit.resource.helm.HelmConfig; /** - * Generates a Helm chart for the kubernetes resources + * Generates a Helm chart for the Kubernetes resources */ @Mojo(name = "helm", defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST) -public class HelmMojo extends AbstractJKubeMojo { - - @Component - MavenProjectHelper projectHelper; +public class HelmMojo extends AbstractHelmMojo { /** - * The generated kubernetes YAML file + * The generated Kubernetes YAML file */ @Parameter(property = "jkube.kubernetesManifest", defaultValue = "${basedir}/target/classes/META-INF/jkube/kubernetes.yml") - File kubernetesManifest; + private File kubernetesManifest; - /** - * One of: - * - */ - @Parameter(property = "jkube.kubernetesTemplate", defaultValue = "${basedir}/target/classes/META-INF/jkube/kubernetes") - File kubernetesTemplate; + @Component + MavenProjectHelper projectHelper; - @Parameter - HelmConfig helm; + @Override + public void init() throws MojoFailureException { + super.init(); + + final File manifest = getKubernetesManifest(); + if (manifest == null || !manifest.isFile()) { + logManifestNotFoundWarning(manifest); + } + + final GeneratedChartListener generatedChartListener = (helmConfig, type, chartFile) -> projectHelper.attachArtifact(project, helmConfig.getChartExtension(), type.getClassifier(), chartFile); + getHelm().getGeneratedChartListeners().add(generatedChartListener); + } @Override public void executeInternal() throws MojoExecutionException { try { - final File manifest = getKubernetesManifest(); - if (manifest == null || !manifest.isFile()) { - logManifestNotFoundWarning(manifest); - } - helm = initHelmConfig(getDefaultHelmType(), javaProject, getKubernetesTemplate(), helm) - .generatedChartListeners(Collections.singletonList((helmConfig, type, chartFile) -> projectHelper - .attachArtifact(project, helmConfig.getChartExtension(), type.getClassifier(), chartFile))) - .build(); - jkubeServiceHub.getHelmService().generateHelmCharts(helm); + jkubeServiceHub.getHelmService().generateHelmCharts(getHelm()); } catch (IOException exception) { throw new MojoExecutionException(exception.getMessage()); } } protected void logManifestNotFoundWarning(File manifest) { - getKitLogger().warn("No kubernetes manifest file has been generated yet by the k8s:resource goal at: " + manifest); + getKitLogger().warn("No Kubernetes manifest file has been generated yet by the k8s:resource goal at: " + manifest); } protected File getKubernetesManifest() { return kubernetesManifest; } - protected File getKubernetesTemplate() { - return kubernetesTemplate; - } - + @Override protected HelmConfig.HelmType getDefaultHelmType() { return HelmConfig.HelmType.KUBERNETES; } - - HelmConfig getHelm() { - return helm; - } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java index acfde17e12..24e53d2ac8 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.maven.plugin.mojo.build; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.ResolutionScope; @@ -22,24 +23,25 @@ import static org.eclipse.jkube.kit.resource.helm.HelmServiceUtil.initHelmPushConfig; @Mojo(name = "helm-push", defaultPhase = LifecyclePhase.INSTALL, requiresDependencyResolution = ResolutionScope.COMPILE) -public class HelmPushMojo extends HelmMojo { +public class HelmPushMojo extends AbstractHelmMojo { + + @Override + public void init() throws MojoFailureException { + super.init(); + + initHelmPushConfig(helm, javaProject); + } @Override public void executeInternal() throws MojoExecutionException { - if (skip) { - return; - } try { - super.executeInternal(); - helm = initHelmPushConfig(helm, javaProject); if (securityDispatcher instanceof DefaultSecDispatcher) { - ((DefaultSecDispatcher) securityDispatcher).setConfigurationFile(helm.getSecurity()); + ((DefaultSecDispatcher) securityDispatcher).setConfigurationFile(getHelm().getSecurity()); } - jkubeServiceHub.getHelmService().uploadHelmChart(helm); + jkubeServiceHub.getHelmService().uploadHelmChart(getHelm()); } catch (Exception exp) { - getKitLogger().error("Error performing helm push", exp); + getKitLogger().error("Error performing Helm push", exp); throw new MojoExecutionException(exp.getMessage(), exp); } } - } diff --git a/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmLintMojo.java b/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmLintMojo.java index 3aa0d11e7c..365c28e42b 100644 --- a/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmLintMojo.java +++ b/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmLintMojo.java @@ -26,21 +26,15 @@ public class OpenshiftHelmLintMojo extends HelmLintMojo { /** - * The generated kubernetes YAML file + * One of: + * */ - @Parameter(property = "jkube.kubernetesManifest", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift.yml") - private File openShiftManifest; - - /** - * The generated kubernetes YAML file - */ - @Parameter(property = "jkube.kubernetesManifest", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift") + @Parameter(property = "jkube.openshiftTemplate", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift") private File openShiftTemplate; - @Override - protected File getKubernetesManifest() { - return openShiftManifest; - } @Override protected File getKubernetesTemplate() { diff --git a/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmMojo.java b/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmMojo.java index d5786d6781..69abb24099 100644 --- a/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmMojo.java +++ b/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmMojo.java @@ -25,7 +25,7 @@ public class OpenshiftHelmMojo extends HelmMojo { /** - * The generated kubernetes YAML file + * The generated OpenShift YAML file */ @Parameter(property = "jkube.openshiftManifest", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift.yml") private File openShiftManifest; @@ -62,6 +62,6 @@ protected String getLogPrefix() { @Override protected void logManifestNotFoundWarning(File manifest) { - getKitLogger().warn("No openshift manifest file has been generated yet by the oc:resource goal at: " + manifest); + getKitLogger().warn("No OpenShift manifest file has been generated yet by the oc:resource goal at: " + manifest); } } diff --git a/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmPushMojo.java b/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmPushMojo.java index b52ddbb355..acdeb36000 100644 --- a/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmPushMojo.java +++ b/openshift-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenshiftHelmPushMojo.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.maven.plugin.mojo.build; import java.io.File; + import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; @@ -25,22 +26,15 @@ public class OpenshiftHelmPushMojo extends HelmPushMojo { /** - * The generated kubernetes YAML file - */ - @Parameter(property = "jkube.kubernetesManifest", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift.yml") - private File openShiftManifest; - - /** - * The generated kubernetes YAML file + * One of: + * */ - @Parameter(property = "jkube.kubernetesManifest", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift") + @Parameter(property = "jkube.openshiftTemplate", defaultValue = "${basedir}/target/classes/META-INF/jkube/openshift") private File openShiftTemplate; - @Override - protected File getKubernetesManifest() { - return openShiftManifest; - } - @Override protected File getKubernetesTemplate() { return openShiftTemplate; @@ -55,5 +49,4 @@ protected HelmConfig.HelmType getDefaultHelmType() { protected String getLogPrefix() { return OpenShift.DEFAULT_LOG_PREFIX; } - }