Skip to content

Commit 5cbd970

Browse files
authored
Merge pull request #6 from yrodiere/more-tags
Better container/Elasticsearch tags and add JDK tag
2 parents 291e1d2 + 00aceb3 commit 5cbd970

File tree

2 files changed

+53
-10
lines changed

2 files changed

+53
-10
lines changed

src/main/java/org/hibernate/search/develocity/scan/BuildScanMetadata.java

+29-10
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public final class BuildScanMetadata {
2222
private static final Pattern DOCKERFILE_FROM_PATTERN = Pattern.compile( "FROM (.+)" );
2323
private static final Pattern CONTAINER_IMAGE_SHORT_PATTERN = Pattern.compile(
2424
"^(?:.*/)?([^/]+:[^-.]+(?:[-.][^-.]+)?).*$" );
25+
private static final Pattern JDK_VERSION_MAJOR_PATTERN = Pattern.compile(
26+
"^.*version \"(\\d+).*$", Pattern.DOTALL );
27+
private static final Pattern JDK_VERSION_MAJOR_FALLBACK_PATTERN = Pattern.compile( "(\\d+)\\." );
2528

2629
private BuildScanMetadata() {
2730
}
@@ -40,12 +43,12 @@ public static void addMetadataToBuildScan(BuildScanApi buildScanApi, MavenSessio
4043
tagIntegrations( buildScanApi, mavenSession, project );
4144
}
4245

43-
recordExecutableVersion(
44-
buildScanApi, mavenSession, "java-version.main.compiler", JavaVersions::forJavacExecutable );
45-
recordExecutableVersion(
46-
buildScanApi, mavenSession, "java-version.test.compiler", JavaVersions::forJavacExecutable );
47-
recordExecutableVersion(
48-
buildScanApi, mavenSession, "java-version.test.launcher", JavaVersions::forJavaExecutable );
46+
recordExecutableVersion( buildScanApi, mavenSession, "java-version.main.compiler", false,
47+
JavaVersions::forJavacExecutable );
48+
recordExecutableVersion( buildScanApi, mavenSession, "java-version.test.compiler", false,
49+
JavaVersions::forJavacExecutable );
50+
recordExecutableVersion( buildScanApi, mavenSession, "java-version.test.launcher", true,
51+
JavaVersions::forJavaExecutable );
4952
}
5053

5154
private static void tagIntegrations(BuildScanApi buildScanApi, MavenSession mavenSession, MavenProject project) {
@@ -64,8 +67,7 @@ private static void tagIntegrations(BuildScanApi buildScanApi, MavenSession mave
6467
if ( !getBooleanProperty( project, "test.lucene.skip" ) ) {
6568
buildScanApi.tag( "lucene" );
6669
}
67-
if ( !getBooleanProperty( project, "test.elasticsearch.skip" )
68-
&& getBooleanProperty( project, "test.elasticsearch.run.image.pull" ) ) {
70+
if ( !getBooleanProperty( project, "test.elasticsearch.skip" ) ) {
6971
var distribution = getStringProperty( mavenSession, "test.elasticsearch.distribution" );
7072
tagDockerfileShortImageRef( buildScanApi, mavenSession,
7173
"search-backend/%s.Dockerfile".formatted( distribution ),
@@ -97,7 +99,7 @@ private static void tagDockerfileShortImageRef(BuildScanApi buildScanApi, MavenS
9799
ref = ref.substring( 0, ref.lastIndexOf( ':' ) + 1 ) + versionOverride;
98100
}
99101
String shortImageRef = toShortImageRef( ref );
100-
buildScanApi.tag( shortImageRef );
102+
buildScanApi.tag( shortImageRef.replace( ':', '-' ) );
101103
buildScanApi.value(
102104
shortImageRef.substring( 0, shortImageRef.lastIndexOf( ':' ) ),
103105
ref.substring( ref.lastIndexOf( ':' ) + 1 )
@@ -119,12 +121,29 @@ static String toShortImageRef(String ref) {
119121
}
120122

121123
private static void recordExecutableVersion(BuildScanApi buildScanApi, MavenSession mavenSession,
122-
String propertyName, Function<String, String> executableToVersion) {
124+
String propertyName, boolean tag, Function<String, String> executableToVersion) {
123125
String javaExecutable = getStringProperty( mavenSession, propertyName );
124126
String javaVersion = executableToVersion.apply( javaExecutable );
127+
if ( tag ) {
128+
buildScanApi.tag( "jdk-%s".formatted( toJdkMajor( javaVersion ) ) );
129+
}
125130
buildScanApi.value( propertyName, "Path: %s\nResolved version: %s".formatted( javaExecutable, javaVersion ) );
126131
}
127132

133+
static Object toJdkMajor(String fullVersionText) {
134+
var matcher = JDK_VERSION_MAJOR_PATTERN.matcher( fullVersionText );
135+
if ( matcher.matches() ) {
136+
return matcher.group( 1 );
137+
}
138+
// As a fallback, try to match a simple version string
139+
// such as the one coming from Runtime.version().toString()
140+
matcher = JDK_VERSION_MAJOR_FALLBACK_PATTERN.matcher( fullVersionText );
141+
if ( matcher.find() ) {
142+
return matcher.group( 1 );
143+
}
144+
return "unknown";
145+
}
146+
128147
private static String getStringProperty(MavenSession mavenSession, String key) {
129148
return getStringProperty( mavenSession.getResult().getProject(), key );
130149
}

src/test/java/org/hibernate/search/develocity/scan/BuildScanMetadataTest.java

+24
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,28 @@ void toShortImageRef(String expected, String ref) {
2727
assertEquals( expected, BuildScanMetadata.toShortImageRef( ref ) );
2828
}
2929

30+
@ParameterizedTest
31+
@CsvSource(textBlock = """
32+
17,'javac 17.0.7
33+
openjdk version "17.0.7" 2023-04-18
34+
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
35+
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)'
36+
11,'javac 17.0.7
37+
openjdk version "11.0.7" 2023-04-18
38+
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
39+
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)'
40+
17,'openjdk version "17.0.7" 2023-04-18
41+
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
42+
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)'
43+
11,'openjdk version "11.0.7" 2023-04-18
44+
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
45+
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)'
46+
17,17.0.7
47+
11,11.0.7
48+
17,foobar 17.0 something
49+
""")
50+
void toJdkMajor(String expected, String fullVersionText) {
51+
assertEquals( expected, BuildScanMetadata.toJdkMajor( fullVersionText ) );
52+
}
53+
3054
}

0 commit comments

Comments
 (0)