diff --git a/ci/check.sh b/ci/check.sh index f8d292ed..0c3de17f 100755 --- a/ci/check.sh +++ b/ci/check.sh @@ -3,4 +3,4 @@ set -eou pipefail GRADLE_OPTS="-Duser.name=jenkins -Duser.home=/opt/jenkins -Djava.io.tmpdir=/tmp" \ - ./gradlew -Pjenkins=true clean check --no-daemon --refresh-dependencies --stacktrace + ./gradlew -Pjenkins=true --no-daemon --refresh-dependencies --stacktrace clean check diff --git a/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/TestcontainersCassandraConfiguration.java b/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/TestcontainersCassandraConfiguration.java index f85ef9b2..89ec6547 100644 --- a/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/TestcontainersCassandraConfiguration.java +++ b/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/TestcontainersCassandraConfiguration.java @@ -68,14 +68,16 @@ import example.app.crm.model.Customer; public class TestcontainersCassandraConfiguration extends TestCassandraConfiguration { // Apache Cassandra Constants - private static final String CASSANDRA_VERSION = System.getProperty("cassandra.version", "3.11.14"); + private static final String CASSANDRA_VERSION = System.getProperty("cassandra.version", "3.11.15"); private static final String LOCAL_DATACENTER_NAME = System.getProperty("cassandra.datacenter.name", "datacenter1"); - // Java (JVM/JRE) Constants + // Java (JRE/JVM) Constants private static final String SPRING_JAVA_VERSION = System.getProperty("spring.java.version", "17.0.6_10-jdk-focal"); // Testcontainers Constants - private static final String TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX = "harbor-repo.vmware.com/dockerhub-proxy-cache/"; + private static final String TESTCONTAINERS_REGISTRY = "harbor-repo.vmware.com/"; + private static final String TESTCONTAINERS_REPOSITORY = "dockerhub-proxy-cache/"; + private static final String TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX = TESTCONTAINERS_REGISTRY.concat(TESTCONTAINERS_REPOSITORY); private static final String TESTCONTAINERS_SPRINGCI_HUB_IMAGE_NAME_PREFIX = TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX.concat("springci/"); private static final String TESTCONTAINERS_HTTPS_PROXY = String.format("https://%s", TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX); private static final String TESTCONTAINERS_PULL_PAUSE_TIMEOUT = "5"; // 5 seconds diff --git a/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/testcontainers/VmwHarborProxyImageNameSubstitutor.java b/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/testcontainers/VmwHarborProxyImageNameSubstitutor.java index beb6e23d..40ff2539 100644 --- a/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/testcontainers/VmwHarborProxyImageNameSubstitutor.java +++ b/spring-geode-project/spring-geode/src/test/java/example/app/crm/config/testcontainers/VmwHarborProxyImageNameSubstitutor.java @@ -18,6 +18,7 @@ package example.app.crm.config.testcontainers; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; import org.springframework.lang.NonNull; @@ -41,10 +42,17 @@ public class VmwHarborProxyImageNameSubstitutor extends ImageNameSubstitutor { private static final String CASSANDRA_KEYWORD = "cassandra"; private static final String JENKINS_KEYWORD = "jenkins"; + + // VMware Harbor Proxy (DockerHub Proxy Cache) Configuration private static final String VMWARE_HARBOR_PROXY_URL = "harbor-repo.vmware.com"; + // Testcontainers Configuration + private static final String TESTCONTAINERS_REGISTRY = VMWARE_HARBOR_PROXY_URL.concat("/"); + private static final String TESTCONTAINERS_REPOSITORY = "dockerhub-proxy-cache/"; + private static final String TESTCONTAINERS_NAMESPACE = "library/"; + private static final String TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX = - VMWARE_HARBOR_PROXY_URL.concat("/dockerhub-proxy-cache/"); + TESTCONTAINERS_REGISTRY.concat(TESTCONTAINERS_REPOSITORY).concat(TESTCONTAINERS_NAMESPACE); protected static final String TESTCONTAINERS_HUB_IMAGE_NAME_TEMPLATE = TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX.concat("%s"); @@ -55,20 +63,25 @@ public class VmwHarborProxyImageNameSubstitutor extends ImageNameSubstitutor { protected static final String TESTCONTAINERS_SPRINGCI_HUB_IMAGE_NAME_TEMPLATE = TESTCONTAINERS_SPRINGCI_HUB_IMAGE_NAME_PREFIX.concat("%s"); + // Spring Configuration protected static final String SPRING_JAVA_VERSION = System.getProperty("spring.java.version", "17.0.6_10-jdk-focal"); protected static final String SPRING_DATA_CASSANDRA_DOCKER_IMAGE_NAME = String.format("spring-data-with-cassandra-3.11:%s", SPRING_JAVA_VERSION); + // Docker Configuration protected static final String DOCKER_IMAGE_NAME_WITH_VERSION_TEMPLATE = "%1$s:%2$s"; private static final Map springManagedDockerImages = new ConcurrentHashMap<>(); static { - springManagedDockerImages.put("cassandra", SPRING_DATA_CASSANDRA_DOCKER_IMAGE_NAME); + springManagedDockerImages.put(CASSANDRA_KEYWORD, SPRING_DATA_CASSANDRA_DOCKER_IMAGE_NAME); } + private static final boolean USE_SPRING_MANAGED_DOCKER_IMAGES = + Boolean.getBoolean("use-spring-managed-docker-images"); + private final Logger logger = LoggerFactory.getLogger(getClass()); @Override @@ -76,30 +89,36 @@ public class VmwHarborProxyImageNameSubstitutor extends ImageNameSubstitutor { DockerImageName resolvedDockerImageName = resolveDockerImageName(originalDockerImageName); - logInfo("Original Docker Image Name [{}]", originalDockerImageName.asCanonicalNameString()); - logInfo("Resolved Docker Image Name [{}]", resolvedDockerImageName.asCanonicalNameString()); + logInfo("Original Docker Image Name [{}]", () -> asArray(originalDockerImageName.asCanonicalNameString())); + logInfo("Resolved Docker Image Name [{}]", () -> asArray(resolvedDockerImageName.asCanonicalNameString())); return resolveCompatibleSubstituteFor(resolvedDockerImageName); } protected boolean isJenkinsEnvironment() { - return Boolean.TRUE.equals(Boolean.getBoolean(JENKINS_KEYWORD)); + return Boolean.getBoolean(JENKINS_KEYWORD); + } + + protected boolean isSpringManagedDockerImage(DockerImageName dockerImageName) { + + return USE_SPRING_MANAGED_DOCKER_IMAGES + && (isJenkinsEnvironment() && springManagedDockerImages.containsKey(dockerImageName.getUnversionedPart())); } protected boolean isVMwareHarborProxyAvailable(DockerImageName dockerImageName) { - return dockerImageName.getRegistry().contains(VMWARE_HARBOR_PROXY_URL) || isJenkinsEnvironment(); + return isJenkinsEnvironment() || dockerImageName.getRegistry().contains(VMWARE_HARBOR_PROXY_URL); } protected DockerImageName resolveCompatibleSubstituteFor(DockerImageName dockerImageName) { - return springManagedDockerImages.containsKey(dockerImageName.getUnversionedPart()) + return isSpringManagedDockerImage(dockerImageName) ? dockerImageName.asCompatibleSubstituteFor(CASSANDRA_KEYWORD) : dockerImageName; } protected DockerImageName resolveDockerImageName(DockerImageName originalDockerImageName) { - logInfo("Is Jenkins Environment [{}]", isJenkinsEnvironment()); + logInfo("Is Jenkins Environment [{}]", () -> asArray(isJenkinsEnvironment())); DockerImageName resolvedDockerImageName = originalDockerImageName; @@ -149,11 +168,20 @@ public class VmwHarborProxyImageNameSubstitutor extends ImageNameSubstitutor { } protected void logInfo(String message, Object... arguments) { + logInfo(message, () -> arguments); + } + + protected void logInfo(String message, Supplier argumentsSupplier) { Logger logger = getLogger(); if (logger.isInfoEnabled()) { + Object[] arguments = argumentsSupplier.get(); logger.info(String.format(message, arguments), arguments); } } + + private Object[] asArray(Object... array) { + return array; + } }