@@ -22,6 +22,9 @@ public final class BuildScanMetadata {
22
22
private static final Pattern DOCKERFILE_FROM_PATTERN = Pattern .compile ( "FROM (.+)" );
23
23
private static final Pattern CONTAINER_IMAGE_SHORT_PATTERN = Pattern .compile (
24
24
"^(?:.*/)?([^/]+:[^-.]+(?:[-.][^-.]+)?).*$" );
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+)\\ ." );
25
28
26
29
private BuildScanMetadata () {
27
30
}
@@ -40,12 +43,12 @@ public static void addMetadataToBuildScan(BuildScanApi buildScanApi, MavenSessio
40
43
tagIntegrations ( buildScanApi , mavenSession , project );
41
44
}
42
45
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 );
49
52
}
50
53
51
54
private static void tagIntegrations (BuildScanApi buildScanApi , MavenSession mavenSession , MavenProject project ) {
@@ -64,8 +67,7 @@ private static void tagIntegrations(BuildScanApi buildScanApi, MavenSession mave
64
67
if ( !getBooleanProperty ( project , "test.lucene.skip" ) ) {
65
68
buildScanApi .tag ( "lucene" );
66
69
}
67
- if ( !getBooleanProperty ( project , "test.elasticsearch.skip" )
68
- && getBooleanProperty ( project , "test.elasticsearch.run.image.pull" ) ) {
70
+ if ( !getBooleanProperty ( project , "test.elasticsearch.skip" ) ) {
69
71
var distribution = getStringProperty ( mavenSession , "test.elasticsearch.distribution" );
70
72
tagDockerfileShortImageRef ( buildScanApi , mavenSession ,
71
73
"search-backend/%s.Dockerfile" .formatted ( distribution ),
@@ -97,7 +99,7 @@ private static void tagDockerfileShortImageRef(BuildScanApi buildScanApi, MavenS
97
99
ref = ref .substring ( 0 , ref .lastIndexOf ( ':' ) + 1 ) + versionOverride ;
98
100
}
99
101
String shortImageRef = toShortImageRef ( ref );
100
- buildScanApi .tag ( shortImageRef );
102
+ buildScanApi .tag ( shortImageRef . replace ( ':' , '-' ) );
101
103
buildScanApi .value (
102
104
shortImageRef .substring ( 0 , shortImageRef .lastIndexOf ( ':' ) ),
103
105
ref .substring ( ref .lastIndexOf ( ':' ) + 1 )
@@ -119,12 +121,29 @@ static String toShortImageRef(String ref) {
119
121
}
120
122
121
123
private static void recordExecutableVersion (BuildScanApi buildScanApi , MavenSession mavenSession ,
122
- String propertyName , Function <String , String > executableToVersion ) {
124
+ String propertyName , boolean tag , Function <String , String > executableToVersion ) {
123
125
String javaExecutable = getStringProperty ( mavenSession , propertyName );
124
126
String javaVersion = executableToVersion .apply ( javaExecutable );
127
+ if ( tag ) {
128
+ buildScanApi .tag ( "jdk-%s" .formatted ( toJdkMajor ( javaVersion ) ) );
129
+ }
125
130
buildScanApi .value ( propertyName , "Path: %s\n Resolved version: %s" .formatted ( javaExecutable , javaVersion ) );
126
131
}
127
132
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
+
128
147
private static String getStringProperty (MavenSession mavenSession , String key ) {
129
148
return getStringProperty ( mavenSession .getResult ().getProject (), key );
130
149
}
0 commit comments