@@ -40,8 +40,9 @@ stage('Configure') {
40
40
// Don't build with HANA by default, but only do it nightly until we receive a 3rd instance
41
41
// new BuildEnvironment( dbName: 'hana_cloud', dbLockableResource: 'hana-cloud', dbLockResourceAsHost: true ),
42
42
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' ),
45
46
// We want to enable preview features when testing newer builds of OpenJDK:
46
47
// even if we don't use these features, just enabling them can cause side effects
47
48
// and it's useful to test that.
@@ -109,6 +110,10 @@ stage('Build') {
109
110
state[buildEnv. tag] = [:]
110
111
executions. put(buildEnv. tag, {
111
112
runBuildOnNode(buildEnv. node ?: NODE_PATTERN_BASE ) {
113
+ def mainJavaHome
114
+ if ( buildEnv. mainJdkVersion ) {
115
+ mainJavaHome = tool(name : " OpenJDK ${ buildEnv.mainJdkVersion} Latest" , type : ' jdk' )
116
+ }
112
117
def testJavaHome
113
118
if ( buildEnv. testJdkVersion ) {
114
119
testJavaHome = tool(name : " OpenJDK ${ buildEnv.testJdkVersion} Latest" , type : ' jdk' )
@@ -118,9 +123,17 @@ stage('Build') {
118
123
// See https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md
119
124
withEnv([" JAVA_HOME=${ javaHome} " , " PATH+JAVA=${ javaHome} /bin" ]) {
120
125
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
+ " -Pmain.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 ) {
122
135
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(',') } "
124
137
}
125
138
if ( buildEnv. testJdkLauncherArgs ) {
126
139
state[buildEnv. tag][' additionalOptions' ] = state[buildEnv. tag][' additionalOptions' ] +
@@ -210,6 +223,7 @@ stage('Build') {
210
223
// Job-specific helpers
211
224
212
225
class BuildEnvironment {
226
+ String mainJdkVersion
213
227
String testJdkVersion
214
228
String testJdkLauncherArgs
215
229
String dbName = ' h2'
0 commit comments