@@ -40,18 +40,20 @@ stage('Configure') {
4040// Don't build with HANA by default, but only do it nightly until we receive a 3rd instance
4141// new BuildEnvironment( dbName: 'hana_cloud', dbLockableResource: 'hana-cloud', dbLockResourceAsHost: true ),
4242 new BuildEnvironment ( node : ' s390x' ),
43- // We build with JDK 21, but produce Java 17 bytecode, so we test with JDK 17, to be sure everything works.
44- new BuildEnvironment ( testJdkVersion : ' 17' ),
43+ // We generally build with JDK 21, but our baseline is Java 17, so we test with JDK 17, to be sure everything works.
44+ // Here we even compile the main code with JDK 17, to be sure no JDK 18+ classes are depended on.
45+ new BuildEnvironment ( mainJdkVersion : ' 17' , testJdkVersion : ' 17' ),
4546 // We want to enable preview features when testing newer builds of OpenJDK:
4647 // even if we don't use these features, just enabling them can cause side effects
4748 // and it's useful to test that.
48- new BuildEnvironment ( testJdkVersion : ' 23' , testJdkLauncherArgs : ' --enable-preview' ),
49- new BuildEnvironment ( testJdkVersion : ' 24' , testJdkLauncherArgs : ' --enable-preview' ),
49+ new BuildEnvironment ( testJdkVersion : ' 23' , testJdkLauncherArgs : ' --enable-preview' , additionalOptions : ' -PskipJacoco=true' ),
50+ new BuildEnvironment ( testJdkVersion : ' 24' , testJdkLauncherArgs : ' --enable-preview' , additionalOptions : ' -PskipJacoco=true' ),
51+ new BuildEnvironment ( testJdkVersion : ' 25' , testJdkLauncherArgs : ' --enable-preview' , additionalOptions : ' -PskipJacoco=true' ),
5052 // The following JDKs aren't supported by Hibernate ORM out-of-the box yet:
5153 // they require the use of -Dnet.bytebuddy.experimental=true.
5254 // Make sure to remove that argument as soon as possible
5355 // -- generally that requires upgrading bytebuddy after the JDK goes GA.
54- new BuildEnvironment ( testJdkVersion : ' 25 ' , testJdkLauncherArgs : ' --enable-preview -Dnet.bytebuddy.experimental=true' )
56+ new BuildEnvironment ( testJdkVersion : ' 26 ' , testJdkLauncherArgs : ' --enable-preview -Dnet.bytebuddy.experimental=true ' , additionalOptions : ' -PskipJacoco =true' )
5557 ];
5658
5759 if ( env. CHANGE_ID ) {
@@ -101,13 +103,19 @@ stage('Build') {
101103 Map<String , Closure > executions = [:]
102104 Map<String , Map<String , String > > state = [:]
103105 environments. each { BuildEnvironment buildEnv ->
104- // Don't build environments for newer JDKs when this is a PR
105- if ( helper. scmSource. pullRequest && buildEnv. testJdkVersion ) {
106+ // Don't build environments for newer JDKs when this is a PR, unless the PR is labelled with 'jdk' or 'jdk-<version>'
107+ if ( helper. scmSource. pullRequest &&
108+ buildEnv. testJdkVersion && buildEnv. testJdkVersion. toInteger() > DEFAULT_JDK_VERSION . toInteger() &&
109+ ! pullRequest. labels. contains( ' jdk' ) && ! pullRequest. labels. contains( " jdk-${ buildEnv.testJdkVersion} " ) ) {
106110 return
107111 }
108112 state[buildEnv. tag] = [:]
109113 executions. put(buildEnv. tag, {
110114 runBuildOnNode(buildEnv. node ?: NODE_PATTERN_BASE ) {
115+ def mainJavaHome
116+ if ( buildEnv. mainJdkVersion ) {
117+ mainJavaHome = tool(name : " OpenJDK ${ buildEnv.mainJdkVersion} Latest" , type : ' jdk' )
118+ }
111119 def testJavaHome
112120 if ( buildEnv. testJdkVersion ) {
113121 testJavaHome = tool(name : " OpenJDK ${ buildEnv.testJdkVersion} Latest" , type : ' jdk' )
@@ -117,9 +125,17 @@ stage('Build') {
117125 // See https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md
118126 withEnv([" JAVA_HOME=${ javaHome} " , " PATH+JAVA=${ javaHome} /bin" ]) {
119127 state[buildEnv. tag][' additionalOptions' ] = ' -PmavenMirror=nexus-load-balancer-c4cf05fd92f43ef8.elb.us-east-1.amazonaws.com'
120- if ( testJavaHome ) {
128+ if ( buildEnv. mainJdkVersion ) {
129+ state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
130+ " -Pmain.jdk.version=${ buildEnv.mainJdkVersion} "
131+ }
132+ if ( buildEnv. testJdkVersion ) {
133+ state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
134+ " -Ptest.jdk.version=${ buildEnv.testJdkVersion} "
135+ }
136+ if ( buildEnv. mainJdkVersion || buildEnv. testJdkVersion ) {
121137 state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
122- " -Ptest.jdk.version= ${ buildEnv.testJdkVersion } - Porg.gradle.java.installations.paths=${ javaHome} , ${ testJavaHome} "
138+ " -Porg.gradle.java.installations.paths=${ [ javaHome, mainJavaHome, testJavaHome].findAll { it != null }.join(',') } "
123139 }
124140 if ( buildEnv. testJdkLauncherArgs ) {
125141 state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
@@ -205,6 +221,7 @@ stage('Build') {
205221// Job-specific helpers
206222
207223class BuildEnvironment {
224+ String mainJdkVersion
208225 String testJdkVersion
209226 String testJdkLauncherArgs
210227 String dbName = ' h2'
0 commit comments