-
Notifications
You must be signed in to change notification settings - Fork 820
Description
Description:
Support for asdf's .tool-versions file was added to the java-version-file parameter with PR #606 in response to issue #579 - unfortunately, there's a difference between what asdf requires for this file, vs what setup-java supports:
asdf requires that the Java version in .tool-versions is fully specified
So a file will typically look like this:
java corretto-21.0.2.13.1
If you shorten the version, eg to 21.0.2 or 21, and run asdf install java, you'll get this error from asdf:
Unknown release: corretto-21.0.2
setup-java only supports major versions or strict 3-part semver
setup-java supports version numbers of 1 to 3 dot-separated integers (eg major to major.minor.patch). This excludes several valid version numbers - here are some examples:
- all Corretto version numbers, which are always at least 4-part (eg
21.0.2.13.1or8.322.06.4) - Zulu
8.74.0.17 - sapmachine
11.0.16.1 - Oracle
18.0.2.1 - Microsoft
17.0.1.12.1
setup-java only supports major versions for Corretto
This is probably due to AWS Corretto only providing a simple API for looking up Java versions, that only supports getting the latest version for each major version of Java:
| 'https://corretto.github.io/corretto-downloads/latest_links/indexmap_with_checksum.json'; |
So, Corretto with the java-version-file parameter is doubly unsupported:
- Corretto 5-part version numbers don't match the regex's used by
setup-javato verify version numbers - Even if Corretto version numbers were accepted,
corretto/installer.tswouldn't be able to locate and download the specific Corretto version, because it can only support finding bymajorversion numbersetup-java/src/distributions/corretto/installer.ts
Lines 61 to 62 in 99b8673
if (version.includes('.')) { throw new Error('Only major versions are supported');
Task version:
Platform:
- Ubuntu
- macOS
- Windows
Runner type:
- Hosted
- Self-hosted
Repro steps:
Define an invocation of actions/setup-java in a workflow, and point java-version-file to .tool-versions:
uses: actions/setup-java@v4
with:
distribution: zulu
java-version-file: .tool-versions
In .tool-versions, define a version like zulu-8.58.0.13 - and verify that works by executing asdf install java:
java zulu-8.58.0.13
The let the ci.yml workflow run.
Expected behavior:
Ideally, if the .tool-versions file is valid for asdf, setup-java should install that precise version of Java. This means setup-java needs to accept all versions output by asdf list-all java.
Where a distribution has been specified that setup-java is unable to search for precise Java versions (ie Corretto), if the user has set a java-version-accept-any-matching-major-version parameter to true it should just install the latest version of Java for that major version.
Actual behavior:
zulu-8.58.0.13 in .tool-versions (guardian/etag-caching@959d4dc) :
https://github.com/guardian/etag-caching/actions/runs/8470107933/job/23207054598#step:3:16
No supported version was found in file .tool-versions
