Skip to content

Commit

Permalink
Merge pull request #7749 from iocanel/s2i-jar-path
Browse files Browse the repository at this point in the history
fix(#7712): S2i build no longer renames artifacts
  • Loading branch information
geoand authored Mar 12, 2020
2 parents e83afeb + 66dd28c commit f02e1c0
Show file tree
Hide file tree
Showing 9 changed files with 402 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

package io.quarkus.container.image.s2i.deployment;

import java.util.Optional;

import io.quarkus.container.image.deployment.util.ImageUtil;

public enum S2iBaseJavaImage {

//We only compare `repositories` so registries and tags are stripped
FABRIC8("fabric8/s2i-java:latest", "JAVA_MAIN_CLASS", "JAVA_APP_JAR", "JAVA_LIB_DIR", "JAVA_CLASSPATH", "JAVA_OPTIONS"),
OPENJDK_8_RHEL7("redhat-openjdk-18/openjdk18-openshift:latest", "JAVA_MAIN_CLASS", "JAVA_APP_JAR", "JAVA_LIB_DIR",
"JAVA_CLASSPATH", "JAVA_OPTIONS"),
OPENJDK_8_RHEL8("openjdk/openjdk-8-rhel8:latest", "JAVA_MAIN_CLASS", "JAVA_APP_JAR", "JAVA_LIB_DIR", "JAVA_CLASSPATH",
"JAVA_OPTIONS"),
OPENJDK_11_RHEL7("openjdk/openjdk-11-rhel7:latest", "JAVA_MAIN_CLASS", "JAVA_APP_JAR", "JAVA_LIB_DIR", "JAVA_CLASSPATH",
"JAVA_OPTIONS"),
OPENJDK_11_RHEL8("openjdk/openjdk-11-rhel8:latest", "JAVA_MAIN_CLASS", "JAVA_APP_JAR", "JAVA_LIB_DIR", "JAVA_CLASSPATH",
"JAVA_OPTIONS");

private final String image;
private final String javaMainClassEnvVar;
private final String jarEnvVar;
private final String jarLibEnvVar;
private final String classpathEnvVar;
private final String jvmOptionsEnvVar;

public static Optional<S2iBaseJavaImage> findMatching(String image) {
for (S2iBaseJavaImage candidate : S2iBaseJavaImage.values()) {
if (ImageUtil.getRepository(candidate.getImage()).equals(ImageUtil.getRepository(image))) {
return Optional.of(candidate);
}
}
return Optional.empty();
}

private S2iBaseJavaImage(String image, String javaMainClassEnvVar, String jarEnvVar, String jarLibEnvVar,
String classpathEnvVar, String jvmOptionsEnvVar) {
this.image = image;
this.javaMainClassEnvVar = javaMainClassEnvVar;
this.jarEnvVar = jarEnvVar;
this.jarLibEnvVar = jarLibEnvVar;
this.classpathEnvVar = classpathEnvVar;
this.jvmOptionsEnvVar = jvmOptionsEnvVar;
}

public String getImage() {
return image;
}

public String getJavaMainClassEnvVar() {
return javaMainClassEnvVar;
}

public String getJvmOptionsEnvVar() {
return jvmOptionsEnvVar;
}

public String getClasspathEnvVar() {
return classpathEnvVar;
}

public String getJarLibEnvVar() {
return jarLibEnvVar;
}

public String getJarEnvVar() {
return jarEnvVar;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@

package io.quarkus.container.image.s2i.deployment;

import java.util.Optional;

import io.quarkus.container.image.deployment.util.ImageUtil;

public enum S2iBaseNativeImage {

//We only compare `repositories` so registries and tags are stripped
QUARKUS("quarkus/ubi-quarkus-native-binary-s2i:latest", "application", "QUARKUS_HOME", "QUARKUS_OPTS");

private final String image;
private final String fixedNativeBinaryName;
private final String homeDirEnvVar;
private final String optsEnvVar;

public static Optional<S2iBaseNativeImage> findMatching(String image) {
for (S2iBaseNativeImage candidate : S2iBaseNativeImage.values()) {
if (ImageUtil.getRepository(candidate.getImage()).equals(ImageUtil.getRepository(image))) {
return Optional.of(candidate);
}
}
return Optional.empty();
}

private S2iBaseNativeImage(String image, String fixedNativeBinaryName, String homeDirEnvVar, String optsEnvVar) {
this.image = image;
this.fixedNativeBinaryName = fixedNativeBinaryName;
this.homeDirEnvVar = homeDirEnvVar;
this.optsEnvVar = optsEnvVar;
}

public String getImage() {
return image;
}

public String getFixedNativeNinaryName() {
return this.fixedNativeBinaryName;
}

public String getHomeDirEnvVar() {
return homeDirEnvVar;
}

public String getOptsEnvVar() {
return optsEnvVar;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.time.Duration;
import java.util.List;
import java.util.Optional;

import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigPhase;
Expand All @@ -12,6 +13,7 @@ public class S2iConfig {

public static final String DEFAULT_BASE_JVM_IMAGE = "fabric8/s2i-java:2.3";
public static final String DEFAULT_BASE_NATIVE_IMAGE = "quay.io/quarkus/ubi-quarkus-native-binary-s2i:19.3.0";
public static final String DEFAULT_NATIVE_TARGET_FILENAME = "application";

/**
* The base image to be used when a container image is being produced for the jar build
Expand All @@ -38,18 +40,32 @@ public class S2iConfig {
public List<String> nativeArguments;

/**
* The path to where the jar is added during the assemble phase.
* The directory where the jar is added during the assemble phase.
* This is dependant on the s2i image and should be supplied if a non default image is used.
*/
@ConfigItem(defaultValue = "/deployments/application${quarkus.package.runner-suffix}.jar")
public String jarPath;
@ConfigItem(defaultValue = "/deployments/")
public String jarDirectory;

/**
* The path to where the native binary is added during the assemble phase.
* This is dependant on the s2i image and should be supplied if a non default image is used.
* The resulting filename of the jar in the s2i image.
* This option may be used if the selected s2i image uses a fixed name for the jar.
*/
@ConfigItem
public Optional<String> jarFileName;

/**
* The directory where the native binary is added during the assemble phase.
* This is dependant on the s2i image and should be supplied if a non-default image is used.
*/
@ConfigItem(defaultValue = "/home/quarkus/")
public String nativeBinaryDirectory;

/**
* The resulting filename of the native binary in the s2i image.
* This option may be used if the selected s2i image uses a fixed name for the native binary.
*/
@ConfigItem(defaultValue = "/home/quarkus/application")
public String nativeBinaryPath;
@ConfigItem
public Optional<String> nativeBinaryFileName;

/**
* The build timeout.
Expand Down
Loading

0 comments on commit f02e1c0

Please sign in to comment.