JDK tools for all LTS versions on all permanent agents of the RelEng JIPP
Summary
The Eclipse TLP is built and tested on all three major OS, different CPU architectures and different Java versions. If running in a configuration for which not the JDKs in all versions are provided in the RelEng JIPP, which is basically the case for all configurations except Linux on x86-64, we current download a JDK to build or test against. Examples are: blob/5e8b7a58e6574635bb6eab4ebb7a0779946c9cb7/JenkinsJobs/shared/utilities.groovy#L257-L280
- https://github.com/eclipse-platform/eclipse.platform.swt/blob/7f9089ed7daaf630970fea7fa5bdb18cfba5cdcb/Jenkinsfile#L208-L213
- https://github.com/eclipse-equinox/equinox/blob/9b933ab0e894778e518d9500e3566456de7a757e/Jenkinsfile#L40-L65
- https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/blob/5e8b7a58e6574635bb6eab4ebb7a0779946c9cb7/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile#L184-L192 Calling
And there are more cases to come where we need specific JDKs on the agent running a test or (native) build:
- https://github.com/eclipse-jdt/eclipse.jdt.debug/issues/843#issuecomment-3856053646
- https://github.com/eclipse-equinox/equinox/pull/1283
The approach to download the required JDKs on demand has the advantage that we have full control and configure it as we need immediately and that it scales relatively well when running on many different agents. However it becomes more and more cumbersome to reimplement the same logic again and again, which is also not trivial for all three OS. Even worse, it constantly consumes precious bandwidth when running on any agent that's not a default Linux x86-64.
Therefore I would like make JDKs in all LTS Java versions, i.e. 8, 11, 17, 21 and 25, available on all permanent agents of the RelEng JIPP as corresponding JDK tools.
But installing all needed JDKs in all versions manually on all static agents used will probably be tedious, especially since all installations should be maintained and kept up to date.
A solution I hope to get the best from both approaches could be to install the Eclipse Temurin installer Plugin aka adoptopenjdk Plugin in the RelEng JIPP.
And to configure it to have installations for all LTS Java versions, i.e. 8, 11, 17, 21 and 25.
I assume/hope it would be possible to configure each JDK and it's exact version only once (on the controller) and the adoptOpenJdkInstaller would then just download the JDK for the current version on demand.
Ideally the JDK tools would use the same temurin-jdk labels like for the default agents (e.g. temurin-jdk25-latest) and fall back to the temurin-installer on static/other agents.
Would it be possible to extend/overwrite the default tools-jdk.hbs file only for the static agents of the eclipse.platform.releng?
The documentation of the Eclipse Temurin installer plugin provides guidance in this regard that could be helpful:
Priority
-
Urgent -
High -
Medium -
Low
Severity
-
Blocker -
Major -
Normal -
Low