The builds on a Jenkins node should be isolated. The paths of local
repository should be distinct. Therefore we used the trick with
EXECUTOR_NUMBER:

https://gitbox.apache.org/repos/asf?p=maven-jenkins-lib.git;a=blob;f=vars/asfMavenTlpPlgnBuild.groovy;h=e4576ac12e9dec73aee0540fa9aab37fd507d614;hb=HEAD#l150

This is the path and wrong because it is not distinct!
Local Repo (linux-jdk11-m3.6.x_build): ../.maven_repositories/null

The problem is that the code is not serialized on the particular Jenkins
node and executor.
Thus we observed errors in Archetype builds when running integration tests
via maven-invoker-plugin:

[INFO] Building: build-and-run-its\pom.xml
[INFO] run post-build script verify.groovy
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by
org.codehaus.groovy.reflection.CachedClass
(file:/F:/short/.maven_repositories/null/org/codehaus/groovy/groovy-all/2.4.8/groovy-all-2.4.8.jar)
to method java.lang.Object.finalize()

So I moved the code into the targeting execution block:

https://gitbox.apache.org/repos/asf?p=maven-jenkins-lib.git;a=commitdiff;h=aee445426dac012af4326c0b80c93422200c2a56

and the logs look promissing now:

Local Repo (windows-jdk11-m3.6.x_build): ../.maven_repositories/0
Local Repo (windows-jdk12-m3.6.x_build): ../.maven_repositories/1
Local Repo (windows-jdk13-m3.6.x_build): ../.maven_repositories/2

-- 
Cheers
Tibor

Reply via email to