diff --git a/Jenkinsfile b/Jenkinsfile index 88625140b..32c4541e8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -40,9 +40,11 @@ pipeline { steps { script { - docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.docker']) { - sh "PROFILE=all-dbs JENKINS_USER_NAME=${p['jenkins.user.name']} ci/test.sh" - sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh" + docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) { + docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.docker']) { + sh "PROFILE=all-dbs JENKINS_USER_NAME=${p['jenkins.user.name']} ci/test.sh" + sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh" + } } } } @@ -70,9 +72,11 @@ pipeline { } steps { script { - docker.image(p['docker.java.next.image']).inside(p['docker.java.inside.docker']) { - sh "PROFILE=all-dbs JENKINS_USER_NAME=${p['jenkins.user.name']} ci/test.sh" - sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh" + docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) { + docker.image(p['docker.java.next.image']).inside(p['docker.java.inside.docker']) { + sh "PROFILE=all-dbs JENKINS_USER_NAME=${p['jenkins.user.name']} ci/test.sh" + sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh" + } } } } @@ -99,19 +103,21 @@ pipeline { } steps { script { - docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) { - sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' + - "DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} " + - "DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} " + - "GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} " + - "./mvnw -s settings.xml -Pci,artifactory " + - "-Dartifactory.server=${p['artifactory.url']} " + - "-Dartifactory.username=${ARTIFACTORY_USR} " + - "-Dartifactory.password=${ARTIFACTORY_PSW} " + - "-Dartifactory.staging-repository=${p['artifactory.repository.snapshot']} " + - "-Dartifactory.build-name=spring-data-relational " + - "-Dartifactory.build-number=spring-data-relational-${BRANCH_NAME}-build-${BUILD_NUMBER} " + - "-Dmaven.test.skip=true clean deploy -U -B" + docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) { + docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) { + sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' + + "DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} " + + "DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} " + + "GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} " + + "./mvnw -s settings.xml -Pci,artifactory " + + "-Dartifactory.server=${p['artifactory.url']} " + + "-Dartifactory.username=${ARTIFACTORY_USR} " + + "-Dartifactory.password=${ARTIFACTORY_PSW} " + + "-Dartifactory.staging-repository=${p['artifactory.repository.snapshot']} " + + "-Dartifactory.build-name=spring-data-relational " + + "-Dartifactory.build-number=spring-data-relational-${BRANCH_NAME}-build-${BUILD_NUMBER} " + + "-Dmaven.test.skip=true clean deploy -U -B" + } } } } diff --git a/ci/accept-third-party-license.sh b/ci/accept-third-party-license.sh index bf25ac7e4..fa45441a6 100755 --- a/ci/accept-third-party-license.sh +++ b/ci/accept-third-party-license.sh @@ -3,13 +3,13 @@ { echo "mcr.microsoft.com/mssql/server:2022-latest" echo "ibmcom/db2:11.5.7.0a" - echo "harbor-repo.vmware.com/mcr-proxy-cache/mssql/server:2022-latest" - echo "harbor-repo.vmware.com/dockerhub-proxy-cache/ibmcom/db2:11.5.7.0a" + echo "docker-hub.usw1.packages.broadcom.com/mssql/server:2022-latest" + echo "docker-hub.usw1.packages.broadcom.com/ibmcom/db2:11.5.7.0a" } > spring-data-jdbc/src/test/resources/container-license-acceptance.txt { echo "mcr.microsoft.com/mssql/server:2022-latest" echo "ibmcom/db2:11.5.7.0a" - echo "harbor-repo.vmware.com/mcr-proxy-cache/mssql/server:2022-latest" - echo "harbor-repo.vmware.com/dockerhub-proxy-cache/ibmcom/db2:11.5.7.0a" + echo "docker-hub.usw1.packages.broadcom.com/mssql/server:2022-latest" + echo "docker-hub.usw1.packages.broadcom.com/ibmcom/db2:11.5.7.0a" } > spring-data-r2dbc/src/test/resources/container-license-acceptance.txt diff --git a/ci/pipeline.properties b/ci/pipeline.properties index 60057f265..824563a21 100644 --- a/ci/pipeline.properties +++ b/ci/pipeline.properties @@ -3,8 +3,8 @@ java.main.tag=17.0.9_9-jdk-focal java.next.tag=21.0.1_12-jdk-jammy # Docker container images - standard -docker.java.main.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.main.tag} -docker.java.next.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.next.tag} +docker.java.main.image=library/eclipse-temurin:${java.main.tag} +docker.java.next.image=library/eclipse-temurin:${java.next.tag} # Supported versions of MongoDB docker.mongodb.4.4.version=4.4.25 @@ -14,6 +14,7 @@ docker.mongodb.7.0.version=7.0.2 # Supported versions of Redis docker.redis.6.version=6.2.13 +docker.redis.7.version=7.2.4 # Supported versions of Cassandra docker.cassandra.3.version=3.11.16 @@ -25,6 +26,8 @@ docker.java.inside.docker=-u root -v /var/run/docker.sock:/var/run/docker.sock - # Credentials docker.registry= docker.credentials=hub.docker.com-springbuildmaster +docker.proxy.registry=https://docker-hub.usw1.packages.broadcom.com +docker.proxy.credentials=usw1_packages_broadcom_com-jenkins-token artifactory.credentials=02bd1690-b54f-4c9f-819d-a77cb7a9822c artifactory.url=https://repo.spring.io artifactory.repository.snapshot=libs-snapshot-local diff --git a/spring-data-relational/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java b/spring-data-relational/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java index b45ed4fe1..a8639d2d3 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java +++ b/spring-data-relational/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java @@ -25,7 +25,7 @@ import org.testcontainers.utility.ImageNameSubstitutor; /** * An {@link ImageNameSubstitutor} only used on CI servers to leverage internal proxy solution, that needs to vary the * prefix based on which container image is needed. - * + * * @author Greg Turnquist */ public class ProxyImageNameSubstitutor extends ImageNameSubstitutor { @@ -37,14 +37,10 @@ public class ProxyImageNameSubstitutor extends ImageNameSubstitutor { private static final List NAMES_TO_LIBRARY_PROXY_PREFIX = List.of("mariadb", "mysql", "postgres"); - private static final List NAMES_TO_MCR_PROXY_PREFIX = List.of("mcr.microsoft.com/mssql"); - - private static final String PROXY_PREFIX = "harbor-repo.vmware.com/dockerhub-proxy-cache/"; + private static final String PROXY_PREFIX = "docker-hub.usw1.packages.broadcom.com/"; private static final String LIBRARY_PROXY_PREFIX = PROXY_PREFIX + "library/"; - private static final String MCR_PROXY_PREFIX = "harbor-repo.vmware.com/mcr-proxy-cache/"; - @Override public DockerImageName apply(DockerImageName dockerImageName) { @@ -62,13 +58,6 @@ public class ProxyImageNameSubstitutor extends ImageNameSubstitutor { return DockerImageName.parse(transformedName); } - if (NAMES_TO_MCR_PROXY_PREFIX.stream().anyMatch(s -> dockerImageName.asCanonicalNameString().contains(s))) { - - String transformedName = applyMcrProxyPrefix(dockerImageName.asCanonicalNameString()); - LOG.info("Converting " + dockerImageName.asCanonicalNameString() + " to " + transformedName); - return DockerImageName.parse(transformedName); - } - LOG.info("Not changing " + dockerImageName.asCanonicalNameString() + "..."); return dockerImageName; } @@ -92,10 +81,4 @@ public class ProxyImageNameSubstitutor extends ImageNameSubstitutor { return LIBRARY_PROXY_PREFIX + imageName; } - /** - * Apply an MCR-based prefix. - */ - private static String applyMcrProxyPrefix(String imageName) { - return MCR_PROXY_PREFIX + imageName.substring("mcr.microsoft.com/".length()); - } }