Skip to content

Commit b0be754

Browse files
committed
Test out Harboy Proxy.
1 parent f2d110a commit b0be754

File tree

8 files changed

+110
-2
lines changed

8 files changed

+110
-2
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ target/
1313

1414
#prevent license accepting file to get accidentially commited to git
1515
container-license-acceptance.txt
16+
spring-data-jdbc/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java
17+
spring-data-r2dbc/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java

Jenkinsfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ pipeline {
3333

3434
environment {
3535
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
36+
TESTCONTAINERS_IMAGE_SUBSTITUTOR = 'org.springframework.data.ProxyImageNameSubstitutor'
3637
}
3738

3839
steps {
@@ -49,7 +50,7 @@ pipeline {
4950
when {
5051
beforeAgent(true)
5152
allOf {
52-
branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
53+
branch(pattern: "issue/proxy|main|(\\d\\.\\d\\.x)", comparator: "REGEXP") // TODO
5354
not { triggeredBy 'UpstreamCause' }
5455
}
5556
}
@@ -61,6 +62,7 @@ pipeline {
6162
options { timeout(time: 30, unit: 'MINUTES') }
6263
environment {
6364
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
65+
TESTCONTAINERS_IMAGE_SUBSTITUTOR = 'org.springframework.data.ProxyImageNameSubstitutor'
6466
}
6567
steps {
6668
script {

ci/accept-third-party-license.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
{
44
echo "mcr.microsoft.com/mssql/server:2019-CU16-ubuntu-20.04"
55
echo "ibmcom/db2:11.5.7.0a"
6+
echo "harbor-repo.vmware.com/dockerhub-proxy-cache/mcr.microsoft.com/mssql/server:2019-CU16-ubuntu-20.04"
7+
echo "harbor-repo.vmware.com/dockerhub-proxy-cache/ibmcom/db2:11.5.7.0a"
68
} > spring-data-jdbc/src/test/resources/container-license-acceptance.txt
79

810
{
911
echo "mcr.microsoft.com/mssql/server:2022-latest"
1012
echo "ibmcom/db2:11.5.7.0a"
13+
echo "harbor-repo.vmware.com/dockerhub-proxy-cache/mcr.microsoft.com/mssql/server:2019-CU16-ubuntu-20.04"
14+
echo "harbor-repo.vmware.com/dockerhub-proxy-cache/ibmcom/db2:11.5.7.0a"
1115
} > spring-data-r2dbc/src/test/resources/container-license-acceptance.txt

ci/test.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
set -euo pipefail
44

55
ci/accept-third-party-license.sh
6+
7+
echo "Hard linking ProxyImageNameSubstitutor into JDBC and R2DBC..."
8+
pushd spring-data-jdbc/src/test/java/org/springframework/data
9+
ln -f ../../../../../../../spring-data-relational/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java .
10+
popd
11+
12+
pushd spring-data-r2dbc/src/test/java/org/springframework/data
13+
ln -f ../../../../../../../spring-data-relational/src/test/java/org/springframework/data/ProxyImageNameSubstitutor.java .
14+
popd
15+
616
mkdir -p /tmp/jenkins-home
717
chown -R 1001:1001 .
818
MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" \

spring-data-jdbc/src/test/resources/logback.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<logger name="org.springframework.data" level="info"/>
1212
<!--<logger name="org.springframework.jdbc.core" level="trace" />-->
1313
<!--<logger name="org.springframework.data.jdbc.mybatis.DummyEntityMapper" level="trace" />-->
14+
<logger name="org.testcontainers" level="debug" />
1415

1516
<root level="warn">
1617
<appender-ref ref="console"/>

spring-data-r2dbc/pom.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,6 @@
487487
</plugins>
488488
</build>
489489
</profile>
490-
491490
</profiles>
492491

493492
</project>

spring-data-relational/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,13 @@
9090
<scope>test</scope>
9191
</dependency>
9292

93+
<dependency>
94+
<groupId>org.testcontainers</groupId>
95+
<artifactId>testcontainers</artifactId>
96+
<version>${testcontainers}</version>
97+
<scope>test</scope>
98+
</dependency>
99+
93100
</dependencies>
94101

95102
</project>
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*
2+
* Copyright 2015-2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.data;
17+
18+
import java.util.List;
19+
20+
import org.slf4j.Logger;
21+
import org.slf4j.LoggerFactory;
22+
import org.testcontainers.utility.DockerImageName;
23+
import org.testcontainers.utility.ImageNameSubstitutor;
24+
25+
/**
26+
* An {@link ImageNameSubstitutor} only used on CI servers to leverage internal proxy solution, that needs to vary the
27+
* prefix based on which container image is needed.
28+
*
29+
* @author Greg Turnquist
30+
*/
31+
public class ProxyImageNameSubstitutor extends ImageNameSubstitutor {
32+
33+
private static final Logger LOG = LoggerFactory.getLogger(ProxyImageNameSubstitutor.class);
34+
35+
private static final List<String> NAMES_TO_PROXY_PREFIX = List.of("ryuk", "arm64v8/mariadb", "ibmcom/db2",
36+
"gvenzl/oracle-xe");
37+
38+
private static final List<String> NAMES_TO_LIBRARY_PROXY_PREFIX = List.of("mariadb", "mysql", "postgres");
39+
40+
private static final String PROXY_PREFIX = "harbor-repo.vmware.com/dockerhub-proxy-cache/";
41+
42+
private static final String LIBRARY_PROXY_PREFIX = PROXY_PREFIX + "library/";
43+
44+
@Override
45+
public DockerImageName apply(DockerImageName dockerImageName) {
46+
47+
if (NAMES_TO_PROXY_PREFIX.stream().anyMatch(s -> dockerImageName.asCanonicalNameString().contains(s))) {
48+
49+
String transformedName = applyProxyPrefix(dockerImageName.asCanonicalNameString());
50+
LOG.info("Converting " + dockerImageName.asCanonicalNameString() + " to " + transformedName);
51+
return DockerImageName.parse(transformedName);
52+
}
53+
54+
if (NAMES_TO_LIBRARY_PROXY_PREFIX.stream().anyMatch(s -> dockerImageName.asCanonicalNameString().contains(s))) {
55+
56+
String transformedName = applyProxyAndLibraryPrefix(dockerImageName.asCanonicalNameString());
57+
LOG.info("Converting " + dockerImageName.asCanonicalNameString() + " to " + transformedName);
58+
return DockerImageName.parse(transformedName);
59+
}
60+
61+
LOG.info("Not changing " + dockerImageName.asCanonicalNameString() + "...");
62+
return dockerImageName;
63+
}
64+
65+
@Override
66+
protected String getDescription() {
67+
return "Spring Data Proxy Image Name Substitutor";
68+
}
69+
70+
/**
71+
* Apply a non-library-based prefix.
72+
*/
73+
private static String applyProxyPrefix(String imageName) {
74+
return PROXY_PREFIX + imageName;
75+
}
76+
77+
/**
78+
* Apply a library based prefix.
79+
*/
80+
private static String applyProxyAndLibraryPrefix(String imageName) {
81+
return LIBRARY_PROXY_PREFIX + imageName;
82+
}
83+
}

0 commit comments

Comments
 (0)