@@ -40,8 +40,9 @@ 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.
@@ -109,6 +110,10 @@ stage('Build') {
109110 state[buildEnv. tag] = [:]
110111 executions. put(buildEnv. tag, {
111112 runBuildOnNode(buildEnv. node ?: NODE_PATTERN_BASE ) {
113+ def mainJavaHome
114+ if ( buildEnv. mainJdkVersion ) {
115+ mainJavaHome = tool(name : " OpenJDK ${ buildEnv.mainJavaHome} Latest" , type : ' jdk' )
116+ }
112117 def testJavaHome
113118 if ( buildEnv. testJdkVersion ) {
114119 testJavaHome = tool(name : " OpenJDK ${ buildEnv.testJdkVersion} Latest" , type : ' jdk' )
@@ -118,9 +123,17 @@ stage('Build') {
118123 // See https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md
119124 withEnv([" JAVA_HOME=${ javaHome} " , " PATH+JAVA=${ javaHome} /bin" ]) {
120125 state[buildEnv. tag][' additionalOptions' ] = ' -PmavenMirror=nexus-load-balancer-c4cf05fd92f43ef8.elb.us-east-1.amazonaws.com'
121- if ( testJavaHome ) {
126+ if ( buildEnv. mainJdkVersion ) {
127+ state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
128+ " -Ptest.jdk.version=${ buildEnv.mainJdkVersion} "
129+ }
130+ if ( buildEnv. testJdkVersion ) {
131+ state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
132+ " -Ptest.jdk.version=${ buildEnv.testJdkVersion} "
133+ }
134+ if ( buildEnv. mainJdkVersion || buildEnv. testJdkVersion ) {
122135 state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
123- " -Ptest.jdk.version= ${ buildEnv.testJdkVersion } - Porg.gradle.java.installations.paths=${ javaHome} , ${ testJavaHome} "
136+ " -Porg.gradle.java.installations.paths=${ [ javaHome, mainJavaHome, testJavaHome].findAll { it != null }.join(',') } "
124137 }
125138 if ( buildEnv. testJdkLauncherArgs ) {
126139 state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
@@ -210,6 +223,7 @@ stage('Build') {
210223// Job-specific helpers
211224
212225class BuildEnvironment {
226+ String mainJdkVersion
213227 String testJdkVersion
214228 String testJdkLauncherArgs
215229 String dbName = ' h2'
0 commit comments