@@ -222,16 +222,49 @@ stage('Build') {
222
222
def repo2 = tempDir + '/repo2'
223
223
// build Hibernate ORM two times without any cache and "publish" the resulting artifacts to different maven repositories
224
224
// so that we can compare them afterwards:
225
- sh "./gradlew --no-daemon clean publishToMavenLocal --no-build-cache -Dmaven.repo.local=$repo1"
226
- sh "./gradlew --no-daemon clean publishToMavenLocal --no-build-cache -Dmaven.repo.local=$repo2"
225
+ sh "./gradlew --no-daemon clean publishToMavenLocal --no-build-cache -Dmaven.repo.local=${ repo1} "
226
+ sh "./gradlew --no-daemon clean publishToMavenLocal --no-build-cache -Dmaven.repo.local=${ repo2} "
227
227
228
- sh "sh ci/compare-build-results.sh $repo1 $ repo2"
228
+ sh "sh ci/compare-build-results.sh ${ repo1} ${ repo2} "
229
229
sh "cat .buildcompare"
230
230
}
231
231
}
232
232
}
233
233
}
234
234
})
235
+ executions.put('Strict JAXP configuration', {
236
+ runBuildOnNode(NODE_PATTERN_BASE) {
237
+ // we want to test with JDK 23 where the strict settings were introduced
238
+ def testJavaHome = tool(name: "OpenJDK 23 Latest", type: 'jdk')
239
+ def javaHome = tool(name: DEFAULT_JDK_TOOL, type: 'jdk')
240
+ // Use withEnv instead of setting env directly, as that is global!
241
+ // See https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md
242
+ withEnv(["JAVA_HOME=${javaHome}", "PATH+JAVA=${javaHome}/bin"]) {
243
+ stage('Checkout') {
244
+ checkout scm
245
+ }
246
+ stage('Test') {
247
+ withGradle {
248
+ def tempDir = pwd(tmp: true)
249
+ def jaxpStrictProperties = tempDir + '/jaxp-strict.properties'
250
+ def jaxpStrictTemplate = testJavaHome + '/conf/jaxp-strict.properties.template'
251
+
252
+ echo 'Copy strict JAXP configuration properties.'
253
+ sh "cp $jaxpStrictTemplate $jaxpStrictProperties"
254
+
255
+ // explicitly calling toString here to prevent Jenkins failures like:
256
+ // > Scripts not permitted to use method groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object (org.codehaus.groovy.runtime.GStringImpl positive)
257
+ String args = ("-Ptest.jdk.version=23 -Porg.gradle.java.installations.paths=${javaHome},${testJavaHome}"
258
+ + " -Ptest.jdk.launcher.args=\"-Djava.xml.config.file=${jaxpStrictProperties}\"").toString()
259
+
260
+ timeout( [time: 60, unit: 'MINUTES'] ) {
261
+ ciBuild(args)
262
+ }
263
+ }
264
+ }
265
+ }
266
+ }
267
+ })
235
268
}
236
269
parallel(executions)
237
270
}
@@ -273,6 +306,14 @@ void ciBuild(buildEnv, String args) {
273
306
// it has limited access, essentially it can only push build scans.
274
307
def develocityCredentialsId = buildEnv.node ? 'ge.hibernate.org-access-key-pr' : 'ge.hibernate.org-access-key'
275
308
309
+ ciBuild(develocityCredentialsId, args)
310
+ }
311
+
312
+ void ciBuild(String args) {
313
+ ciBuild('ge.hibernate.org-access-key-pr', args)
314
+ }
315
+
316
+ void ciBuild(String develocityCredentialsId, String args) {
276
317
withCredentials([string(credentialsId: develocityCredentialsId,
277
318
variable: 'DEVELOCITY_ACCESS_KEY')]) {
278
319
withGradle { // withDevelocity, actually: https://plugins.jenkins.io/gradle/#plugin-content-capturing-build-scans-from-jenkins-pipeline
0 commit comments