mirror of
https://gitea.com/actions/setup-java.git
synced 2026-07-09 19:22:05 +08:00
Compare commits
13 Commits
support-ko
...
releases/v
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
513edc4f87 | ||
|
|
62df799a9c | ||
|
|
176156a187 | ||
|
|
bf7b8deac2 | ||
|
|
0173e6dd1b | ||
|
|
f45cd82b67 | ||
|
|
e2863ad499 | ||
|
|
78efe031a6 | ||
|
|
3be16b57e9 | ||
|
|
0f481fcb61 | ||
|
|
c4922bf809 | ||
|
|
6657b99340 | ||
|
|
a50fdccef1 |
13
.github/java.json
vendored
13
.github/java.json
vendored
@@ -21,6 +21,19 @@
|
||||
"message": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"owner": "maven-javac",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^\\[(WARNING|ERROR)\\]\\s+(.+?\\.java):\\[(\\d+),(\\d+)\\]\\s+(.+)$",
|
||||
"severity": 1,
|
||||
"file": 2,
|
||||
"line": 3,
|
||||
"column": 4,
|
||||
"message": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
5
.github/workflows/e2e-local-file.yml
vendored
5
.github/workflows/e2e-local-file.yml
vendored
@@ -47,7 +47,7 @@ jobs:
|
||||
id: setup-java
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||
jdk-file: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||
java-version: '11.0.0-ea'
|
||||
architecture: x64
|
||||
- name: Verify Java version
|
||||
@@ -88,7 +88,7 @@ jobs:
|
||||
id: setup-java
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||
jdk-file: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||
java-version: '11.0.0-ea'
|
||||
architecture: x64
|
||||
- name: Verify Java version
|
||||
@@ -129,6 +129,7 @@ jobs:
|
||||
id: setup-java
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
# Intentionally uses the deprecated `jdkFile` alias to keep it covered.
|
||||
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||
java-version: '11.0.0-ea'
|
||||
architecture: x64
|
||||
|
||||
74
.github/workflows/e2e-versions.yml
vendored
74
.github/workflows/e2e-versions.yml
vendored
@@ -669,3 +669,77 @@ jobs:
|
||||
JAVA_PATH: ${{ steps.setup-java.outputs.path }}
|
||||
run: bash __tests__/verify-java.sh "17.0.10" "$JAVA_PATH"
|
||||
shell: bash
|
||||
|
||||
setup-java-set-default:
|
||||
name: set-default option - ${{ matrix.os }}
|
||||
needs: setup-java-major-versions
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
- name: Setup Java 17 as default
|
||||
uses: ./
|
||||
id: setup-java-17
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup Java 21 without setting as default
|
||||
uses: ./
|
||||
id: setup-java-21
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '21'
|
||||
set-default: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Verify JAVA_HOME still points to Java 17
|
||||
run: |
|
||||
echo "JAVA_HOME=$JAVA_HOME"
|
||||
echo "Java 17 path=${{ steps.setup-java-17.outputs.path }}"
|
||||
if [ "$JAVA_HOME" != "${{ steps.setup-java-17.outputs.path }}" ]; then
|
||||
echo "JAVA_HOME should still point to Java 17"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
- name: Verify java -version reports Java 17
|
||||
run: |
|
||||
JAVA_VERSION=$(java -version 2>&1 | head -1)
|
||||
echo "java -version: $JAVA_VERSION"
|
||||
if ! echo "$JAVA_VERSION" | grep -q "17"; then
|
||||
echo "Default java should still be version 17"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
- name: Verify JAVA_HOME_21 env var is set
|
||||
run: |
|
||||
$envName = "JAVA_HOME_21_${env:RUNNER_ARCH}"
|
||||
$JavaVersionPath = [Environment]::GetEnvironmentVariable($envName)
|
||||
if (-not $JavaVersionPath) {
|
||||
Write-Host "$envName is not set"
|
||||
exit 1
|
||||
}
|
||||
if (-not (Test-Path "$JavaVersionPath")) {
|
||||
Write-Host "$envName path does not exist: $JavaVersionPath"
|
||||
exit 1
|
||||
}
|
||||
Write-Host "$envName=$JavaVersionPath"
|
||||
shell: pwsh
|
||||
- name: Verify Java 21 outputs are set
|
||||
run: |
|
||||
echo "Java 21 path=${{ steps.setup-java-21.outputs.path }}"
|
||||
echo "Java 21 version=${{ steps.setup-java-21.outputs.version }}"
|
||||
if [ -z "${{ steps.setup-java-21.outputs.path }}" ]; then
|
||||
echo "Java 21 path output should be set"
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${{ steps.setup-java-21.outputs.version }}" ]; then
|
||||
echo "Java 21 version output should be set"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
18
README.md
18
README.md
@@ -29,18 +29,20 @@ For more details, see the full release notes on the [releases page](https://git
|
||||
|
||||
- `java-version`: The Java version that is going to be set up. Takes a whole or [semver](#supported-version-syntax) Java version. If not specified, the action will expect `java-version-file` input to be specified.
|
||||
|
||||
- `java-version-file`: The path to a file containing java version. Supported file types are `.java-version` and `.tool-versions`. See more details in [about .java-version-file](docs/advanced-usage.md#Java-version-file).
|
||||
- `java-version-file`: The path to a file containing java version. Supported file types are `.java-version`, `.tool-versions`, and `.sdkmanrc`. See more details in [about .java-version-file](docs/advanced-usage.md#Java-version-file).
|
||||
|
||||
- `distribution`: _(required)_ Java [distribution](#supported-distributions).
|
||||
- `distribution`: Java [distribution](#supported-distributions). Required unless `java-version-file` points to `.sdkmanrc` with a recognized distribution suffix (for example `java=21.0.5-tem`).
|
||||
|
||||
- `java-package`: The packaging variant of the chosen distribution. Possible values: `jdk`, `jre`, `jdk+fx`, `jre+fx`. Default value: `jdk`.
|
||||
- `java-package`: The packaging variant of the chosen distribution. Possible values: `jdk`, `jre`, `jdk+fx`, `jre+fx`. For Azul Zulu, `jdk+crac` and `jre+crac` are also supported. Default value: `jdk`.
|
||||
|
||||
- `architecture`: The target architecture of the package. Possible values: `x86`, `x64`, `armv7`, `aarch64`, `ppc64le`. Default value: Derived from the runner machine.
|
||||
|
||||
- `jdkFile`: If a use-case requires a custom distribution setup-java uses the compressed JDK from the location pointed by this input and will take care of the installation and caching on the VM. Note: `distribution` must be set to 'jdkfile' (case-sensitive; all lowercase) when using this option.
|
||||
- `jdk-file`: If a use-case requires a custom distribution setup-java uses the compressed JDK from the location pointed by this input and will take care of the installation and caching on the VM. Note: `distribution` must be set to 'jdkfile' (case-sensitive; all lowercase) when using this option. (The camelCase `jdkFile` input is still accepted as a deprecated alias and may be removed in a future release.)
|
||||
|
||||
- `check-latest`: Setting this option makes the action to check for the latest available version for the version spec.
|
||||
|
||||
- `set-default`: Set to `false` to install a JDK without making it the default. When `false`, `JAVA_HOME` and `PATH` are not updated, but `JAVA_HOME_<major>_<arch>` is still set so the JDK remains discoverable. Default value: `true`. See [Installing JDK without setting as default](docs/advanced-usage.md#Installing-JDK-without-setting-as-default) for more details.
|
||||
|
||||
- `verify-signature`: Verifies downloaded Java package signatures when supported by the selected distribution. Currently supported for `temurin` and `microsoft`. If set to `true` for unsupported distributions, the action fails.
|
||||
|
||||
- `verify-signature-public-key`: ASCII-armored GPG public key used to verify the downloaded package signature. Overrides the default bundled key for the selected distribution.
|
||||
@@ -124,7 +126,7 @@ Currently, the following distributions are supported:
|
||||
> [!NOTE]
|
||||
> - The different distributors can provide discrepant list of available versions / supported configurations. Please refer to the official documentation to see the list of supported versions.
|
||||
> - AdoptOpenJDK got moved to Eclipse Temurin and won't be updated anymore. It is highly recommended to migrate workflows from `adopt` and `adopt-openj9`, to `temurin` and `semeru` respectively, to keep receiving software and security updates. See more details in the [Good-bye AdoptOpenJDK post](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/).
|
||||
> - For Azul Zulu OpenJDK architectures x64 and arm64 are mapped to x86 / arm with proper hw_bitness.
|
||||
> - For Azul Zulu OpenJDK, architecture `arm64` is mapped to `aarch64` when querying the Azul Metadata API.
|
||||
> - To comply with the GraalVM Free Terms and Conditions (GFTC) license, it is recommended to use GraalVM JDK 17 version 17.0.12, as this is the only version of GraalVM JDK 17 available under the GFTC license. Additionally, it is encouraged to consider upgrading to GraalVM JDK 21, which offers the latest features and improvements.
|
||||
> - GraalVM Community is available as `distribution: 'graalvm-community'` for stable JDK 17 and later releases published on GitHub.
|
||||
|
||||
@@ -136,15 +138,19 @@ Currently, the following distributions are supported:
|
||||
The action has a built-in functionality for caching and restoring dependencies. It uses [toolkit/cache](https://github.com/actions/toolkit/tree/main/packages/cache) under hood for caching dependencies but requires less configuration settings. Supported package managers are gradle, maven and sbt. The format of the used cache key is `setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }}`, where the hash is based on the following files:
|
||||
|
||||
- gradle: `**/*.gradle*`, `**/gradle-wrapper.properties`, `buildSrc/**/Versions.kt`, `buildSrc/**/Dependencies.kt`, `gradle/*.versions.toml`, and `**/versions.properties`
|
||||
- maven: `**/pom.xml` and `**/.mvn/wrapper/maven-wrapper.properties`
|
||||
- maven: `**/pom.xml`, `**/.mvn/wrapper/maven-wrapper.properties`, and `**/.mvn/extensions.xml`
|
||||
- sbt: all sbt build definition files `**/*.sbt`, `**/project/build.properties`, `**/project/**.scala`, `**/project/**.sbt`
|
||||
|
||||
When the option `cache-dependency-path` is specified, the hash is based on the matching file. This option supports wildcards and a list of file names, and is especially useful for monorepos.
|
||||
|
||||
The workflow output `cache-hit` is set to indicate if an exact match was found for the key [as actions/cache does](https://github.com/actions/cache/tree/main#outputs).
|
||||
|
||||
The workflow output `cache-primary-key` exposes the primary cache key computed by the action for the configured build tool. It is useful for composing with [`actions/cache`](https://github.com/actions/cache) or [`actions/cache/restore`](https://github.com/actions/cache/tree/main/restore) in later steps or dependent jobs that need to reuse the exact same key. It is empty when caching is not enabled or when caching is skipped (for example, when the cache service is unavailable).
|
||||
|
||||
The cache input is optional, and caching is turned off by default.
|
||||
|
||||
**Maven Wrapper:** when `cache: 'maven'` is enabled, the action also caches and restores the Maven Wrapper distribution downloaded to `~/.m2/wrapper/dists` (in addition to the local repository), so wrapper-based (`./mvnw`) builds don't re-download the wrapper on every run. This is keyed on `**/.mvn/wrapper/maven-wrapper.properties` as shown above.
|
||||
|
||||
#### Caching gradle dependencies
|
||||
```yaml
|
||||
steps:
|
||||
|
||||
@@ -78,6 +78,10 @@ describe('dependency cache', () => {
|
||||
ReturnType<typeof glob.hashFiles>,
|
||||
Parameters<typeof glob.hashFiles>
|
||||
>;
|
||||
let spySetOutput: jest.SpyInstance<
|
||||
ReturnType<typeof core.setOutput>,
|
||||
Parameters<typeof core.setOutput>
|
||||
>;
|
||||
|
||||
beforeEach(() => {
|
||||
spyCacheRestore = jest
|
||||
@@ -86,6 +90,7 @@ describe('dependency cache', () => {
|
||||
Promise.resolve(undefined)
|
||||
);
|
||||
spyGlobHashFiles = jest.spyOn(glob, 'hashFiles');
|
||||
spySetOutput = jest.spyOn(core, 'setOutput').mockImplementation(() => {});
|
||||
spyWarning.mockImplementation(() => null);
|
||||
});
|
||||
|
||||
@@ -96,11 +101,11 @@ describe('dependency cache', () => {
|
||||
});
|
||||
|
||||
describe('for maven', () => {
|
||||
it('throws error if no pom.xml or maven-wrapper.properties found', async () => {
|
||||
it('throws error if no pom.xml, maven-wrapper.properties, or extensions.xml found', async () => {
|
||||
await expect(restore('maven', '')).rejects.toThrow(
|
||||
`No file in ${projectRoot(
|
||||
workspace
|
||||
)} matched to [**/pom.xml,**/.mvn/wrapper/maven-wrapper.properties], make sure you have checked out the target repository`
|
||||
)} matched to [**/pom.xml,**/.mvn/wrapper/maven-wrapper.properties,**/.mvn/extensions.xml], make sure you have checked out the target repository`
|
||||
);
|
||||
});
|
||||
it('downloads cache based on pom.xml', async () => {
|
||||
@@ -115,11 +120,20 @@ describe('dependency cache', () => {
|
||||
expect.any(String)
|
||||
);
|
||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||
'**/pom.xml\n**/.mvn/wrapper/maven-wrapper.properties'
|
||||
'**/pom.xml\n**/.mvn/wrapper/maven-wrapper.properties\n**/.mvn/extensions.xml'
|
||||
);
|
||||
expect(spyWarning).not.toHaveBeenCalled();
|
||||
expect(spyInfo).toHaveBeenCalledWith('maven cache is not found');
|
||||
});
|
||||
it('sets the cache-primary-key output', async () => {
|
||||
createFile(join(workspace, 'pom.xml'));
|
||||
|
||||
await restore('maven', '');
|
||||
expect(spySetOutput).toHaveBeenCalledWith(
|
||||
'cache-primary-key',
|
||||
expect.stringContaining('setup-java-')
|
||||
);
|
||||
});
|
||||
it('downloads cache based on maven-wrapper.properties', async () => {
|
||||
createDirectory(join(workspace, '.mvn'));
|
||||
createDirectory(join(workspace, '.mvn', 'wrapper'));
|
||||
@@ -136,7 +150,25 @@ describe('dependency cache', () => {
|
||||
expect.any(String)
|
||||
);
|
||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||
'**/pom.xml\n**/.mvn/wrapper/maven-wrapper.properties'
|
||||
'**/pom.xml\n**/.mvn/wrapper/maven-wrapper.properties\n**/.mvn/extensions.xml'
|
||||
);
|
||||
expect(spyWarning).not.toHaveBeenCalled();
|
||||
expect(spyInfo).toHaveBeenCalledWith('maven cache is not found');
|
||||
});
|
||||
it('downloads cache based on extensions.xml', async () => {
|
||||
createDirectory(join(workspace, '.mvn'));
|
||||
createFile(join(workspace, '.mvn', 'extensions.xml'));
|
||||
|
||||
await restore('maven', '');
|
||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||
[
|
||||
join(os.homedir(), '.m2', 'repository'),
|
||||
join(os.homedir(), '.m2', 'wrapper', 'dists')
|
||||
],
|
||||
expect.any(String)
|
||||
);
|
||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||
'**/pom.xml\n**/.mvn/wrapper/maven-wrapper.properties\n**/.mvn/extensions.xml'
|
||||
);
|
||||
expect(spyWarning).not.toHaveBeenCalled();
|
||||
expect(spyInfo).toHaveBeenCalledWith('maven cache is not found');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
7.0.352-zulu, 7.0.352
|
||||
8.0.282-trava, 8.0.282
|
||||
8.0.432-albba, 8.0.432
|
||||
8.0.432-amzn, 8.0.432
|
||||
8.0.432-amzn, 8
|
||||
8.0.432-kona, 8.0.432
|
||||
8.0.432-librca, 8.0.432
|
||||
8.0.432-sem, 8.0.432
|
||||
@@ -10,7 +10,7 @@
|
||||
8.0.432-zulu, 8.0.432
|
||||
8.0.432.fx-librca, 8.0.432
|
||||
8.0.432.fx-zulu, 8.0.432
|
||||
8.0.442-amzn, 8.0.442
|
||||
8.0.442-amzn, 8
|
||||
8.0.442-librca, 8.0.442
|
||||
8.0.442-tem, 8.0.442
|
||||
8.0.442-zulu, 8.0.442
|
||||
@@ -19,7 +19,7 @@
|
||||
11.0.14.1-jbr, 11.0.14
|
||||
11.0.15-trava, 11.0.15
|
||||
11.0.25-albba, 11.0.25
|
||||
11.0.25-amzn, 11.0.25
|
||||
11.0.25-amzn, 11
|
||||
11.0.25-kona, 11.0.25
|
||||
11.0.25-librca, 11.0.25
|
||||
11.0.25-ms, 11.0.25
|
||||
@@ -29,7 +29,7 @@
|
||||
11.0.25-zulu, 11.0.25
|
||||
11.0.25.fx-librca, 11.0.25
|
||||
11.0.25.fx-zulu, 11.0.25
|
||||
11.0.26-amzn, 11.0.26
|
||||
11.0.26-amzn, 11
|
||||
11.0.26-librca, 11.0.26
|
||||
11.0.26-ms, 11.0.26
|
||||
11.0.26-sapmchn, 11.0.26
|
||||
@@ -40,7 +40,7 @@
|
||||
17.0.12-jbr, 17.0.12
|
||||
17.0.12-oracle, 17.0.12
|
||||
17.0.13-albba, 17.0.13
|
||||
17.0.13-amzn, 17.0.13
|
||||
17.0.13-amzn, 17
|
||||
17.0.13-kona, 17.0.13
|
||||
17.0.13-librca, 17.0.13
|
||||
17.0.13-ms, 17.0.13
|
||||
@@ -52,7 +52,7 @@
|
||||
17.0.13.crac-zulu, 17.0.13
|
||||
17.0.13.fx-librca, 17.0.13
|
||||
17.0.13.fx-zulu, 17.0.13
|
||||
17.0.14-amzn, 17.0.14
|
||||
17.0.14-amzn, 17
|
||||
17.0.14-librca, 17.0.14
|
||||
17.0.14-ms, 17.0.14
|
||||
17.0.14-sapmchn, 17.0.14
|
||||
@@ -62,7 +62,7 @@
|
||||
17.0.9-graalce, 17.0.9
|
||||
21.0.2-graalce, 21.0.2
|
||||
21.0.2-open, 21.0.2
|
||||
21.0.5-amzn, 21.0.5
|
||||
21.0.5-amzn, 21
|
||||
21.0.5-graal, 21.0.5
|
||||
21.0.5-jbr, 21.0.5
|
||||
21.0.5-kona, 21.0.5
|
||||
@@ -77,7 +77,7 @@
|
||||
21.0.5.crac-zulu, 21.0.5
|
||||
21.0.5.fx-librca, 21.0.5
|
||||
21.0.5.fx-zulu, 21.0.5
|
||||
21.0.6-amzn, 21.0.6
|
||||
21.0.6-amzn, 21
|
||||
21.0.6-graal, 21.0.6
|
||||
21.0.6-librca, 21.0.6
|
||||
21.0.6-ms, 21.0.6
|
||||
@@ -94,7 +94,7 @@
|
||||
22.3.5.r17-mandrel, 22.3.5
|
||||
22.3.5.r17-nik, 22.3.5
|
||||
23-open, 23
|
||||
23.0.1-amzn, 23.0.1
|
||||
23.0.1-amzn, 23
|
||||
23.0.1-graal, 23.0.1
|
||||
23.0.1-graalce, 23.0.1
|
||||
23.0.1-librca, 23.0.1
|
||||
@@ -106,7 +106,7 @@
|
||||
23.0.1.crac-zulu, 23.0.1
|
||||
23.0.1.fx-librca, 23.0.1
|
||||
23.0.1.fx-zulu, 23.0.1
|
||||
23.0.2-amzn, 23.0.2
|
||||
23.0.2-amzn, 23
|
||||
23.0.2-graal, 23.0.2
|
||||
23.0.2-graalce, 23.0.2
|
||||
23.0.2-librca, 23.0.2
|
||||
|
||||
|
@@ -1,254 +1,686 @@
|
||||
[
|
||||
{
|
||||
"id": 10996,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
||||
"package_uuid": "test-uuid-10996",
|
||||
"name": "zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
||||
"zulu_version": [8, 1, 0, 10],
|
||||
"jdk_version": [8, 0, 5, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
8,
|
||||
1,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10997,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
||||
"package_uuid": "test-uuid-10997",
|
||||
"name": "zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
||||
"zulu_version": [8, 2, 0, 1],
|
||||
"jdk_version": [8, 0, 11, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
11
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
8,
|
||||
2,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10346,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10346",
|
||||
"name": "zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 21, 0, 1],
|
||||
"jdk_version": [8, 0, 131, 11]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
131
|
||||
],
|
||||
"openjdk_build_number": 11,
|
||||
"distro_version": [
|
||||
8,
|
||||
21,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10362,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10362",
|
||||
"name": "zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 23, 0, 3],
|
||||
"jdk_version": [8, 0, 144, 1]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
144
|
||||
],
|
||||
"openjdk_build_number": 1,
|
||||
"distro_version": [
|
||||
8,
|
||||
23,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10399,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10399",
|
||||
"name": "zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 25, 0, 1],
|
||||
"jdk_version": [8, 0, 152, 16]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
152
|
||||
],
|
||||
"openjdk_build_number": 16,
|
||||
"distro_version": [
|
||||
8,
|
||||
25,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11355,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11355",
|
||||
"name": "zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 46, 0, 19],
|
||||
"jdk_version": [8, 0, 252, 14]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
252
|
||||
],
|
||||
"openjdk_build_number": 14,
|
||||
"distro_version": [
|
||||
8,
|
||||
46,
|
||||
0,
|
||||
19
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11481,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11481",
|
||||
"name": "zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 47],
|
||||
"jdk_version": [8, 0, 262, 17]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 17,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
47
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11622,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11622",
|
||||
"name": "zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 51],
|
||||
"jdk_version": [8, 0, 262, 19]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 19,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
51
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11535,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11535",
|
||||
"name": "zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 49],
|
||||
"jdk_version": [8, 0, 262, 18]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 18,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
49
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12424,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12424",
|
||||
"name": "zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
||||
"zulu_version": [8, 52, 0, 23],
|
||||
"jdk_version": [8, 0, 282, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
282
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
8,
|
||||
52,
|
||||
0,
|
||||
23
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10383,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10383",
|
||||
"name": "zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
||||
"zulu_version": [9, 0, 0, 15],
|
||||
"jdk_version": [9, 0, 0, 0]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
9,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 0,
|
||||
"distro_version": [
|
||||
9,
|
||||
0,
|
||||
0,
|
||||
15
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10413,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10413",
|
||||
"name": "zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [9, 0, 1, 3],
|
||||
"jdk_version": [9, 0, 1, 0]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
9,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 0,
|
||||
"distro_version": [
|
||||
9,
|
||||
0,
|
||||
1,
|
||||
3
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10503,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10503",
|
||||
"name": "zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [10, 2, 3, 0],
|
||||
"jdk_version": [10, 0, 1, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
10,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
10,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10541,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10541",
|
||||
"name": "zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
||||
"zulu_version": [10, 3, 5, 0],
|
||||
"jdk_version": [10, 0, 2, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
10,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
10,
|
||||
3,
|
||||
5,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10576,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10576",
|
||||
"name": "zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 2, 3, 0],
|
||||
"jdk_version": [11, 0, 1, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
11,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10604,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10604",
|
||||
"name": "zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 29, 3, 0],
|
||||
"jdk_version": [11, 0, 2, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
11,
|
||||
29,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10687,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10687",
|
||||
"name": "zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 31, 11, 0],
|
||||
"jdk_version": [11, 0, 3, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
11,
|
||||
31,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10856,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10856",
|
||||
"name": "zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 13, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
13,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10933,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10933",
|
||||
"name": "zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 15, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10933,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10933",
|
||||
"name": "zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 11, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12397,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12397",
|
||||
"name": "zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
||||
"zulu_version": [11, 45, 27, 0],
|
||||
"jdk_version": [11, 0, 10, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
11,
|
||||
45,
|
||||
27,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10667,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10667",
|
||||
"name": "zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
||||
"zulu_version": [12, 1, 3, 0],
|
||||
"jdk_version": [12, 0, 0, 33]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 33,
|
||||
"distro_version": [
|
||||
12,
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10710,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10710",
|
||||
"name": "zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [12, 2, 3, 0],
|
||||
"jdk_version": [12, 0, 1, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
12,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10780,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10780",
|
||||
"name": "zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
||||
"zulu_version": [12, 3, 11, 0],
|
||||
"jdk_version": [12, 0, 2, 3]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 3,
|
||||
"distro_version": [
|
||||
12,
|
||||
3,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10846,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10846",
|
||||
"name": "zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
||||
"zulu_version": [13, 27, 9, 0],
|
||||
"jdk_version": [13, 0, 0, 33]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 33,
|
||||
"distro_version": [
|
||||
13,
|
||||
27,
|
||||
9,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10888,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10888",
|
||||
"name": "zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [13, 28, 11, 0],
|
||||
"jdk_version": [13, 0, 1, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
13,
|
||||
28,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11073,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11073",
|
||||
"name": "zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
||||
"zulu_version": [13, 29, 9, 0],
|
||||
"jdk_version": [13, 0, 2, 6]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 6,
|
||||
"distro_version": [
|
||||
13,
|
||||
29,
|
||||
9,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12408,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12408",
|
||||
"name": "zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
||||
"zulu_version": [13, 37, 21, 0],
|
||||
"jdk_version": [13, 0, 6, 5]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
6
|
||||
],
|
||||
"openjdk_build_number": 5,
|
||||
"distro_version": [
|
||||
13,
|
||||
37,
|
||||
21,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11236,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11236",
|
||||
"name": "zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
||||
"zulu_version": [14, 27, 1, 0],
|
||||
"jdk_version": [14, 0, 0, 36]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 36,
|
||||
"distro_version": [
|
||||
14,
|
||||
27,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11349,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11349",
|
||||
"name": "zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [14, 28, 21, 0],
|
||||
"jdk_version": [14, 0, 1, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
14,
|
||||
28,
|
||||
21,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11513,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11513",
|
||||
"name": "zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
||||
"zulu_version": [14, 29, 23, 0],
|
||||
"jdk_version": [14, 0, 2, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
14,
|
||||
29,
|
||||
23,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11780,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11780",
|
||||
"name": "zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
||||
"zulu_version": [15, 27, 17, 0],
|
||||
"jdk_version": [15, 0, 0, 36]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 36,
|
||||
"distro_version": [
|
||||
15,
|
||||
27,
|
||||
17,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11924,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11924",
|
||||
"name": "zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [15, 28, 13, 0],
|
||||
"jdk_version": [15, 0, 1, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
15,
|
||||
28,
|
||||
13,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12101,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12101",
|
||||
"name": "zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||
"zulu_version": [15, 28, 51, 0],
|
||||
"jdk_version": [15, 0, 1, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
15,
|
||||
28,
|
||||
51,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12445,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12445",
|
||||
"name": "zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
||||
"zulu_version": [15, 29, 15, 0],
|
||||
"jdk_version": [15, 0, 2, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
15,
|
||||
29,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12447,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
||||
"package_uuid": "test-uuid-12447",
|
||||
"name": "zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
||||
"zulu_version": [21, 32, 17, 0],
|
||||
"jdk_version": [21, 0, 2, 6]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
||||
"java_version": [
|
||||
21,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 6,
|
||||
"distro_version": [
|
||||
21,
|
||||
32,
|
||||
17,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
}
|
||||
]
|
||||
@@ -1,247 +1,667 @@
|
||||
[
|
||||
{
|
||||
"id": 10996,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
||||
"package_uuid": "test-uuid-10996",
|
||||
"name": "zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
||||
"zulu_version": [8, 1, 0, 10],
|
||||
"jdk_version": [8, 0, 5, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
8,
|
||||
1,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10997,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
||||
"package_uuid": "test-uuid-10997",
|
||||
"name": "zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
||||
"zulu_version": [8, 2, 0, 1],
|
||||
"jdk_version": [8, 0, 11, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
11
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
8,
|
||||
2,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10346,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10346",
|
||||
"name": "zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 21, 0, 1],
|
||||
"jdk_version": [8, 0, 131, 11]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
131
|
||||
],
|
||||
"openjdk_build_number": 11,
|
||||
"distro_version": [
|
||||
8,
|
||||
21,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10362,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10362",
|
||||
"name": "zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 23, 0, 3],
|
||||
"jdk_version": [8, 0, 144, 1]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
144
|
||||
],
|
||||
"openjdk_build_number": 1,
|
||||
"distro_version": [
|
||||
8,
|
||||
23,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10399,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10399",
|
||||
"name": "zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 25, 0, 1],
|
||||
"jdk_version": [8, 0, 152, 16]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
152
|
||||
],
|
||||
"openjdk_build_number": 16,
|
||||
"distro_version": [
|
||||
8,
|
||||
25,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11355,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11355",
|
||||
"name": "zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 46, 0, 19],
|
||||
"jdk_version": [8, 0, 252, 14]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
252
|
||||
],
|
||||
"openjdk_build_number": 14,
|
||||
"distro_version": [
|
||||
8,
|
||||
46,
|
||||
0,
|
||||
19
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11481,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11481",
|
||||
"name": "zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 47],
|
||||
"jdk_version": [8, 0, 262, 17]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 17,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
47
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11622,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11622",
|
||||
"name": "zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 51],
|
||||
"jdk_version": [8, 0, 262, 19]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 19,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
51
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11535,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11535",
|
||||
"name": "zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 49],
|
||||
"jdk_version": [8, 0, 262, 18]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 18,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
49
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12424,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12424",
|
||||
"name": "zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
||||
"zulu_version": [8, 52, 0, 23],
|
||||
"jdk_version": [8, 0, 282, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
282
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
8,
|
||||
52,
|
||||
0,
|
||||
23
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10383,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10383",
|
||||
"name": "zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
||||
"zulu_version": [9, 0, 0, 15],
|
||||
"jdk_version": [9, 0, 0, 0]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
9,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 0,
|
||||
"distro_version": [
|
||||
9,
|
||||
0,
|
||||
0,
|
||||
15
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10413,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10413",
|
||||
"name": "zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [9, 0, 1, 3],
|
||||
"jdk_version": [9, 0, 1, 0]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
9,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 0,
|
||||
"distro_version": [
|
||||
9,
|
||||
0,
|
||||
1,
|
||||
3
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10503,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10503",
|
||||
"name": "zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [10, 2, 3, 0],
|
||||
"jdk_version": [10, 0, 1, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
10,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
10,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10541,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10541",
|
||||
"name": "zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
||||
"zulu_version": [10, 3, 5, 0],
|
||||
"jdk_version": [10, 0, 2, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
10,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
10,
|
||||
3,
|
||||
5,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10576,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10576",
|
||||
"name": "zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 2, 3, 0],
|
||||
"jdk_version": [11, 0, 1, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
11,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10604,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10604",
|
||||
"name": "zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 29, 3, 0],
|
||||
"jdk_version": [11, 0, 2, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
11,
|
||||
29,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10687,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10687",
|
||||
"name": "zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 31, 11, 0],
|
||||
"jdk_version": [11, 0, 3, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
11,
|
||||
31,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10856,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10856",
|
||||
"name": "zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 13, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
13,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10933,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10933",
|
||||
"name": "zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 15, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10933,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10933",
|
||||
"name": "zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 11, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12397,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12397",
|
||||
"name": "zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
||||
"zulu_version": [11, 45, 27, 0],
|
||||
"jdk_version": [11, 0, 10, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
11,
|
||||
45,
|
||||
27,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10667,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10667",
|
||||
"name": "zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
||||
"zulu_version": [12, 1, 3, 0],
|
||||
"jdk_version": [12, 0, 0, 33]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 33,
|
||||
"distro_version": [
|
||||
12,
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10710,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10710",
|
||||
"name": "zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [12, 2, 3, 0],
|
||||
"jdk_version": [12, 0, 1, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
12,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10780,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10780",
|
||||
"name": "zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
||||
"zulu_version": [12, 3, 11, 0],
|
||||
"jdk_version": [12, 0, 2, 3]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 3,
|
||||
"distro_version": [
|
||||
12,
|
||||
3,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10846,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10846",
|
||||
"name": "zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
||||
"zulu_version": [13, 27, 9, 0],
|
||||
"jdk_version": [13, 0, 0, 33]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 33,
|
||||
"distro_version": [
|
||||
13,
|
||||
27,
|
||||
9,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10888,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10888",
|
||||
"name": "zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [13, 28, 11, 0],
|
||||
"jdk_version": [13, 0, 1, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
13,
|
||||
28,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11073,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11073",
|
||||
"name": "zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
||||
"zulu_version": [13, 29, 9, 0],
|
||||
"jdk_version": [13, 0, 2, 6]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 6,
|
||||
"distro_version": [
|
||||
13,
|
||||
29,
|
||||
9,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12408,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12408",
|
||||
"name": "zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
||||
"zulu_version": [13, 37, 21, 0],
|
||||
"jdk_version": [13, 0, 6, 5]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
6
|
||||
],
|
||||
"openjdk_build_number": 5,
|
||||
"distro_version": [
|
||||
13,
|
||||
37,
|
||||
21,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11236,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11236",
|
||||
"name": "zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
||||
"zulu_version": [14, 27, 1, 0],
|
||||
"jdk_version": [14, 0, 0, 36]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 36,
|
||||
"distro_version": [
|
||||
14,
|
||||
27,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11349,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11349",
|
||||
"name": "zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [14, 28, 21, 0],
|
||||
"jdk_version": [14, 0, 1, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
14,
|
||||
28,
|
||||
21,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11513,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11513",
|
||||
"name": "zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
||||
"zulu_version": [14, 29, 23, 0],
|
||||
"jdk_version": [14, 0, 2, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
14,
|
||||
29,
|
||||
23,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11780,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11780",
|
||||
"name": "zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
||||
"zulu_version": [15, 27, 17, 0],
|
||||
"jdk_version": [15, 0, 0, 36]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 36,
|
||||
"distro_version": [
|
||||
15,
|
||||
27,
|
||||
17,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11924,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11924",
|
||||
"name": "zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [15, 28, 13, 0],
|
||||
"jdk_version": [15, 0, 1, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
15,
|
||||
28,
|
||||
13,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12101,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12101",
|
||||
"name": "zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||
"zulu_version": [15, 28, 51, 0],
|
||||
"jdk_version": [15, 0, 1, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
15,
|
||||
28,
|
||||
51,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12445,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12445",
|
||||
"name": "zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
||||
"zulu_version": [15, 29, 15, 0],
|
||||
"jdk_version": [15, 0, 2, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
15,
|
||||
29,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,254 +1,686 @@
|
||||
[
|
||||
{
|
||||
"id": 10996,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
||||
"package_uuid": "test-uuid-10996",
|
||||
"name": "zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
||||
"zulu_version": [8, 1, 0, 10],
|
||||
"jdk_version": [8, 0, 5, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
8,
|
||||
1,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10997,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
||||
"package_uuid": "test-uuid-10997",
|
||||
"name": "zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
||||
"zulu_version": [8, 2, 0, 1],
|
||||
"jdk_version": [8, 0, 11, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
11
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
8,
|
||||
2,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10346,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10346",
|
||||
"name": "zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 21, 0, 1],
|
||||
"jdk_version": [8, 0, 131, 11]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
131
|
||||
],
|
||||
"openjdk_build_number": 11,
|
||||
"distro_version": [
|
||||
8,
|
||||
21,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10362,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10362",
|
||||
"name": "zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 23, 0, 3],
|
||||
"jdk_version": [8, 0, 144, 1]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
144
|
||||
],
|
||||
"openjdk_build_number": 1,
|
||||
"distro_version": [
|
||||
8,
|
||||
23,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10399,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10399",
|
||||
"name": "zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 25, 0, 1],
|
||||
"jdk_version": [8, 0, 152, 16]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
152
|
||||
],
|
||||
"openjdk_build_number": 16,
|
||||
"distro_version": [
|
||||
8,
|
||||
25,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11355,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11355",
|
||||
"name": "zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 46, 0, 19],
|
||||
"jdk_version": [8, 0, 252, 14]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
252
|
||||
],
|
||||
"openjdk_build_number": 14,
|
||||
"distro_version": [
|
||||
8,
|
||||
46,
|
||||
0,
|
||||
19
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11481,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11481",
|
||||
"name": "zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 47],
|
||||
"jdk_version": [8, 0, 262, 17]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 17,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
47
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11622,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11622",
|
||||
"name": "zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 51],
|
||||
"jdk_version": [8, 0, 262, 19]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 19,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
51
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11535,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11535",
|
||||
"name": "zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 48, 0, 49],
|
||||
"jdk_version": [8, 0, 262, 18]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
262
|
||||
],
|
||||
"openjdk_build_number": 18,
|
||||
"distro_version": [
|
||||
8,
|
||||
48,
|
||||
0,
|
||||
49
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12424,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12424",
|
||||
"name": "zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
||||
"zulu_version": [8, 52, 0, 23],
|
||||
"jdk_version": [8, 0, 282, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
8,
|
||||
0,
|
||||
282
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
8,
|
||||
52,
|
||||
0,
|
||||
23
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10383,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10383",
|
||||
"name": "zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
||||
"zulu_version": [9, 0, 0, 15],
|
||||
"jdk_version": [9, 0, 0, 0]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
9,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 0,
|
||||
"distro_version": [
|
||||
9,
|
||||
0,
|
||||
0,
|
||||
15
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10413,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10413",
|
||||
"name": "zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [9, 0, 1, 3],
|
||||
"jdk_version": [9, 0, 1, 0]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
9,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 0,
|
||||
"distro_version": [
|
||||
9,
|
||||
0,
|
||||
1,
|
||||
3
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10503,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10503",
|
||||
"name": "zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [10, 2, 3, 0],
|
||||
"jdk_version": [10, 0, 1, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
10,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
10,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10541,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10541",
|
||||
"name": "zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
||||
"zulu_version": [10, 3, 5, 0],
|
||||
"jdk_version": [10, 0, 2, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
10,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
10,
|
||||
3,
|
||||
5,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10576,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10576",
|
||||
"name": "zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 2, 3, 0],
|
||||
"jdk_version": [11, 0, 1, 13]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 13,
|
||||
"distro_version": [
|
||||
11,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10604,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10604",
|
||||
"name": "zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 29, 3, 0],
|
||||
"jdk_version": [11, 0, 2, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
11,
|
||||
29,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10687,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10687",
|
||||
"name": "zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 31, 11, 0],
|
||||
"jdk_version": [11, 0, 3, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
11,
|
||||
31,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10856,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10856",
|
||||
"name": "zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 13, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
13,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10933,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10933",
|
||||
"name": "zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 15, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10933,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10933",
|
||||
"name": "zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 35, 11, 0],
|
||||
"jdk_version": [11, 0, 5, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
11,
|
||||
35,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12397,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12397",
|
||||
"name": "zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
||||
"zulu_version": [11, 45, 27, 0],
|
||||
"jdk_version": [11, 0, 10, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
11,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
11,
|
||||
45,
|
||||
27,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10667,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10667",
|
||||
"name": "zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
||||
"zulu_version": [12, 1, 3, 0],
|
||||
"jdk_version": [12, 0, 0, 33]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 33,
|
||||
"distro_version": [
|
||||
12,
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10710,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10710",
|
||||
"name": "zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [12, 2, 3, 0],
|
||||
"jdk_version": [12, 0, 1, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
12,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10780,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10780",
|
||||
"name": "zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
||||
"zulu_version": [12, 3, 11, 0],
|
||||
"jdk_version": [12, 0, 2, 3]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
12,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 3,
|
||||
"distro_version": [
|
||||
12,
|
||||
3,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10846,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10846",
|
||||
"name": "zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
||||
"zulu_version": [13, 27, 9, 0],
|
||||
"jdk_version": [13, 0, 0, 33]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 33,
|
||||
"distro_version": [
|
||||
13,
|
||||
27,
|
||||
9,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 10888,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-10888",
|
||||
"name": "zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [13, 28, 11, 0],
|
||||
"jdk_version": [13, 0, 1, 10]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 10,
|
||||
"distro_version": [
|
||||
13,
|
||||
28,
|
||||
11,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11073,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11073",
|
||||
"name": "zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
||||
"zulu_version": [13, 29, 9, 0],
|
||||
"jdk_version": [13, 0, 2, 6]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 6,
|
||||
"distro_version": [
|
||||
13,
|
||||
29,
|
||||
9,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12408,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12408",
|
||||
"name": "zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
||||
"zulu_version": [13, 37, 21, 0],
|
||||
"jdk_version": [13, 0, 6, 5]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
13,
|
||||
0,
|
||||
6
|
||||
],
|
||||
"openjdk_build_number": 5,
|
||||
"distro_version": [
|
||||
13,
|
||||
37,
|
||||
21,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11236,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11236",
|
||||
"name": "zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
||||
"zulu_version": [14, 27, 1, 0],
|
||||
"jdk_version": [14, 0, 0, 36]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 36,
|
||||
"distro_version": [
|
||||
14,
|
||||
27,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11349,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11349",
|
||||
"name": "zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [14, 28, 21, 0],
|
||||
"jdk_version": [14, 0, 1, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
14,
|
||||
28,
|
||||
21,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11513,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11513",
|
||||
"name": "zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
||||
"zulu_version": [14, 29, 23, 0],
|
||||
"jdk_version": [14, 0, 2, 12]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
14,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 12,
|
||||
"distro_version": [
|
||||
14,
|
||||
29,
|
||||
23,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11780,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11780",
|
||||
"name": "zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
||||
"zulu_version": [15, 27, 17, 0],
|
||||
"jdk_version": [15, 0, 0, 36]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"openjdk_build_number": 36,
|
||||
"distro_version": [
|
||||
15,
|
||||
27,
|
||||
17,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 11924,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-11924",
|
||||
"name": "zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [15, 28, 13, 0],
|
||||
"jdk_version": [15, 0, 1, 8]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 8,
|
||||
"distro_version": [
|
||||
15,
|
||||
28,
|
||||
13,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12101,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12101",
|
||||
"name": "zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||
"zulu_version": [15, 28, 51, 0],
|
||||
"jdk_version": [15, 0, 1, 9]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"openjdk_build_number": 9,
|
||||
"distro_version": [
|
||||
15,
|
||||
28,
|
||||
51,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12445,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
||||
"package_uuid": "test-uuid-12445",
|
||||
"name": "zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
||||
"zulu_version": [15, 29, 15, 0],
|
||||
"jdk_version": [15, 0, 2, 7]
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
||||
"java_version": [
|
||||
15,
|
||||
0,
|
||||
2
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
15,
|
||||
29,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
},
|
||||
{
|
||||
"id": 12446,
|
||||
"url": "https://cdn.azul.com/zulu/bin/zulu17.48.15-ca-jdk17.0.10-windows_aarch64.zip",
|
||||
"name": "zulu17.48.15-ca-jdk17.0.10-win_aarch4.zip",
|
||||
"zulu_version": [17, 48, 15, 0],
|
||||
"jdk_version": [17, 0, 10, 7]
|
||||
"package_uuid": "test-uuid-12446",
|
||||
"name": "zulu17.48.15-ca-jdk17.0.10-win_aarch64.zip",
|
||||
"download_url": "https://cdn.azul.com/zulu/bin/zulu17.48.15-ca-jdk17.0.10-windows_aarch64.zip",
|
||||
"java_version": [
|
||||
17,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"openjdk_build_number": 7,
|
||||
"distro_version": [
|
||||
17,
|
||||
48,
|
||||
15,
|
||||
0
|
||||
],
|
||||
"latest": false,
|
||||
"availability_type": "ca"
|
||||
}
|
||||
]
|
||||
@@ -563,6 +563,110 @@ describe('setupJava', () => {
|
||||
expect(spyCoreExportVariable).not.toHaveBeenCalled();
|
||||
expect(spyCoreSetOutput).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not set JAVA_HOME and PATH when setDefault is false', async () => {
|
||||
mockJavaBase = new EmptyJavaBase({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
packageType: 'jdk',
|
||||
checkLatest: false,
|
||||
setDefault: false
|
||||
});
|
||||
await expect(mockJavaBase.setupJava()).resolves.toEqual({
|
||||
version: installedJavaVersion,
|
||||
path: javaPath
|
||||
});
|
||||
expect(spyCoreExportVariable).not.toHaveBeenCalledWith(
|
||||
'JAVA_HOME',
|
||||
expect.anything()
|
||||
);
|
||||
expect(spyCoreAddPath).not.toHaveBeenCalled();
|
||||
expect(spyCoreExportVariable).toHaveBeenCalledWith(
|
||||
'JAVA_HOME_11_X86',
|
||||
javaPath
|
||||
);
|
||||
expect(spyCoreSetOutput).toHaveBeenCalledWith(
|
||||
'version',
|
||||
installedJavaVersion
|
||||
);
|
||||
expect(spyCoreSetOutput).toHaveBeenCalledWith('path', javaPath);
|
||||
expect(spyCoreSetOutput).toHaveBeenCalledWith('distribution', 'Empty');
|
||||
expect(spyCoreInfo).toHaveBeenCalledWith(
|
||||
`Installing Java ${installedJavaVersion} (not setting as default)`
|
||||
);
|
||||
});
|
||||
|
||||
it('should set JAVA_HOME and PATH when setDefault is true', async () => {
|
||||
mockJavaBase = new EmptyJavaBase({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
packageType: 'jdk',
|
||||
checkLatest: false,
|
||||
setDefault: true
|
||||
});
|
||||
await expect(mockJavaBase.setupJava()).resolves.toEqual({
|
||||
version: installedJavaVersion,
|
||||
path: javaPath
|
||||
});
|
||||
expect(spyCoreExportVariable).toHaveBeenCalledWith('JAVA_HOME', javaPath);
|
||||
expect(spyCoreAddPath).toHaveBeenCalledWith(path.join(javaPath, 'bin'));
|
||||
expect(spyCoreExportVariable).toHaveBeenCalledWith(
|
||||
'JAVA_HOME_11_X86',
|
||||
javaPath
|
||||
);
|
||||
expect(spyCoreInfo).toHaveBeenCalledWith(
|
||||
`Setting Java ${installedJavaVersion} as the default`
|
||||
);
|
||||
});
|
||||
|
||||
it('should default to setting as default when setDefault is not specified', async () => {
|
||||
mockJavaBase = new EmptyJavaBase({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
});
|
||||
await expect(mockJavaBase.setupJava()).resolves.toEqual({
|
||||
version: installedJavaVersion,
|
||||
path: javaPath
|
||||
});
|
||||
expect(spyCoreExportVariable).toHaveBeenCalledWith('JAVA_HOME', javaPath);
|
||||
expect(spyCoreAddPath).toHaveBeenCalledWith(path.join(javaPath, 'bin'));
|
||||
expect(spyCoreInfo).toHaveBeenCalledWith(
|
||||
`Setting Java ${installedJavaVersion} as the default`
|
||||
);
|
||||
});
|
||||
|
||||
it('should download and not set default when setDefault is false', async () => {
|
||||
mockJavaBase = new EmptyJavaBase({
|
||||
version: '11',
|
||||
architecture: 'x64',
|
||||
packageType: 'jdk',
|
||||
checkLatest: false,
|
||||
setDefault: false
|
||||
});
|
||||
await expect(mockJavaBase.setupJava()).resolves.toEqual({
|
||||
version: '11.0.9',
|
||||
path: path.join('toolcache', 'Java_Empty_jdk', '11.0.9', 'x64')
|
||||
});
|
||||
expect(spyCoreExportVariable).not.toHaveBeenCalledWith(
|
||||
'JAVA_HOME',
|
||||
expect.anything()
|
||||
);
|
||||
expect(spyCoreAddPath).not.toHaveBeenCalled();
|
||||
expect(spyCoreExportVariable).toHaveBeenCalledWith(
|
||||
'JAVA_HOME_11_X64',
|
||||
path.join('toolcache', 'Java_Empty_jdk', '11.0.9', 'x64')
|
||||
);
|
||||
expect(spyCoreSetOutput).toHaveBeenCalledWith('version', '11.0.9');
|
||||
expect(spyCoreSetOutput).toHaveBeenCalledWith(
|
||||
'path',
|
||||
path.join('toolcache', 'Java_Empty_jdk', '11.0.9', 'x64')
|
||||
);
|
||||
expect(spyCoreInfo).toHaveBeenCalledWith(
|
||||
'Installing Java 11.0.9 (not setting as default)'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('normalizeVersion', () => {
|
||||
|
||||
@@ -17,7 +17,7 @@ describe('getAvailableVersions', () => {
|
||||
spyHttpClient.mockReturnValue({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: manifestData as IZuluVersions[]
|
||||
result: [] as IZuluVersions[]
|
||||
});
|
||||
|
||||
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
||||
@@ -45,7 +45,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=32&release_status=ga'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=i686&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -54,7 +54,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=32&release_status=ea'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=i686&release_status=ea&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -63,7 +63,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=64&release_status=ga'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -72,7 +72,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jre',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jre&javafx=false&arch=x86&hw_bitness=64&release_status=ga'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jre&javafx_bundled=false&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -81,7 +81,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk+fx',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jdk&javafx=true&arch=x86&hw_bitness=64&release_status=ga&features=fx'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=true&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -90,7 +90,16 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jre+fx',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jre&javafx=true&arch=x86&hw_bitness=64&release_status=ga&features=fx'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jre&javafx_bundled=true&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
version: '8',
|
||||
architecture: 'x64',
|
||||
packageType: 'jdk+crac',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=true&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -99,7 +108,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=arm&hw_bitness=64&release_status=ga'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=aarch64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -108,12 +117,12 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=arm&hw_bitness=&release_status=ga'
|
||||
'?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=arm&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
]
|
||||
])('build correct url for %s -> %s', async (input, parsedUrl) => {
|
||||
const distribution = new ZuluDistribution(input);
|
||||
distribution['getPlatformOption'] = () => 'macos';
|
||||
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/${parsedUrl}`;
|
||||
const buildUrl = `https://api.azul.com/metadata/v1/zulu/packages/${parsedUrl}`;
|
||||
|
||||
await distribution['getAvailableVersions']();
|
||||
|
||||
@@ -121,16 +130,12 @@ describe('getAvailableVersions', () => {
|
||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||
});
|
||||
|
||||
type DistroArch = {
|
||||
bitness: string;
|
||||
arch: string;
|
||||
};
|
||||
it.each([
|
||||
['amd64', {bitness: '64', arch: 'x86'}],
|
||||
['arm64', {bitness: '64', arch: 'arm'}]
|
||||
['amd64', 'x64'],
|
||||
['arm64', 'aarch64']
|
||||
])(
|
||||
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||
async (osArch: string, distroArch: DistroArch) => {
|
||||
async (osArch: string, distroArch: string) => {
|
||||
jest
|
||||
.spyOn(os, 'arch')
|
||||
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
||||
@@ -142,7 +147,7 @@ describe('getAvailableVersions', () => {
|
||||
checkLatest: false
|
||||
});
|
||||
distribution['getPlatformOption'] = () => 'macos';
|
||||
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=${distroArch.arch}&hw_bitness=${distroArch.bitness}&release_status=ga`;
|
||||
const buildUrl = `https://api.azul.com/metadata/v1/zulu/packages/?os=macos&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=${distroArch}&release_status=ga&availability_types=ca&page=1&page_size=100`;
|
||||
|
||||
await distribution['getAvailableVersions']();
|
||||
|
||||
@@ -152,6 +157,18 @@ describe('getAvailableVersions', () => {
|
||||
);
|
||||
|
||||
it('load available versions', async () => {
|
||||
spyHttpClient
|
||||
.mockReturnValueOnce({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: manifestData as IZuluVersions[]
|
||||
})
|
||||
.mockReturnValueOnce({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: [] as IZuluVersions[]
|
||||
});
|
||||
|
||||
const distribution = new ZuluDistribution({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
@@ -165,10 +182,11 @@ describe('getAvailableVersions', () => {
|
||||
|
||||
describe('getArchitectureOptions', () => {
|
||||
it.each([
|
||||
[{architecture: 'x64'}, {arch: 'x86', hw_bitness: '64', abi: ''}],
|
||||
[{architecture: 'x86'}, {arch: 'x86', hw_bitness: '32', abi: ''}],
|
||||
[{architecture: 'x32'}, {arch: 'x32', hw_bitness: '', abi: ''}],
|
||||
[{architecture: 'arm'}, {arch: 'arm', hw_bitness: '', abi: ''}]
|
||||
[{architecture: 'x64'}, 'x64'],
|
||||
[{architecture: 'x86'}, 'i686'],
|
||||
[{architecture: 'aarch64'}, 'aarch64'],
|
||||
[{architecture: 'arm64'}, 'aarch64'],
|
||||
[{architecture: 'arm'}, 'arm']
|
||||
])('%s -> %s', (input, expected) => {
|
||||
const distribution = new ZuluDistribution({
|
||||
version: '11',
|
||||
@@ -176,7 +194,7 @@ describe('getArchitectureOptions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
});
|
||||
expect(distribution['getArchitectureOptions']()).toEqual(expected);
|
||||
expect(distribution['getArchitectureOptions']()).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ describe('getAvailableVersions', () => {
|
||||
spyHttpClient.mockReturnValue({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: manifestData as IZuluVersions[]
|
||||
result: [] as IZuluVersions[]
|
||||
});
|
||||
|
||||
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
||||
@@ -46,7 +46,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=32&release_status=ga'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=i686&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -55,7 +55,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=32&release_status=ea'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=i686&release_status=ea&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -64,7 +64,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=64&release_status=ga'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -73,7 +73,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jre',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jre&javafx=false&arch=x86&hw_bitness=64&release_status=ga'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jre&javafx_bundled=false&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -82,7 +82,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk+fx',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jdk&javafx=true&arch=x86&hw_bitness=64&release_status=ga&features=fx'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=true&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -91,7 +91,16 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jre+fx',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jre&javafx=true&arch=x86&hw_bitness=64&release_status=ga&features=fx'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jre&javafx_bundled=true&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
version: '8',
|
||||
architecture: 'x64',
|
||||
packageType: 'jdk+crac',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=true&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -100,7 +109,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jdk&javafx=false&arch=arm&hw_bitness=64&release_status=ga'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=aarch64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -109,12 +118,12 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=linux&ext=zip&bundle_type=jdk&javafx=false&arch=arm&hw_bitness=&release_status=ga'
|
||||
'?os=linux_glibc&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=arm&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
]
|
||||
])('build correct url for %s -> %s', async (input, parsedUrl) => {
|
||||
const distribution = new ZuluDistribution(input);
|
||||
distribution['getPlatformOption'] = () => 'linux';
|
||||
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/${parsedUrl}`;
|
||||
distribution['getPlatformOption'] = () => 'linux_glibc';
|
||||
const buildUrl = `https://api.azul.com/metadata/v1/zulu/packages/${parsedUrl}`;
|
||||
|
||||
await distribution['getAvailableVersions']();
|
||||
|
||||
@@ -122,16 +131,12 @@ describe('getAvailableVersions', () => {
|
||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||
});
|
||||
|
||||
type DistroArch = {
|
||||
bitness: string;
|
||||
arch: string;
|
||||
};
|
||||
it.each([
|
||||
['amd64', {bitness: '64', arch: 'x86'}],
|
||||
['arm64', {bitness: '64', arch: 'arm'}]
|
||||
['amd64', 'x64'],
|
||||
['arm64', 'aarch64']
|
||||
])(
|
||||
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||
async (osArch: string, distroArch: DistroArch) => {
|
||||
async (osArch: string, distroArch: string) => {
|
||||
jest
|
||||
.spyOn(os, 'arch')
|
||||
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
||||
@@ -142,10 +147,10 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
});
|
||||
distribution['getPlatformOption'] = () => 'linux';
|
||||
distribution['getPlatformOption'] = () => 'linux_glibc';
|
||||
// Override extension for linux default arch case to match util behavior
|
||||
spyUtilGetDownloadArchiveExtension.mockReturnValue('tar.gz');
|
||||
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?os=linux&ext=tar.gz&bundle_type=jdk&javafx=false&arch=${distroArch.arch}&hw_bitness=${distroArch.bitness}&release_status=ga`;
|
||||
const buildUrl = `https://api.azul.com/metadata/v1/zulu/packages/?os=linux_glibc&archive_type=tar.gz&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=${distroArch}&release_status=ga&availability_types=ca&page=1&page_size=100`;
|
||||
|
||||
await distribution['getAvailableVersions']();
|
||||
|
||||
@@ -155,6 +160,18 @@ describe('getAvailableVersions', () => {
|
||||
);
|
||||
|
||||
it('load available versions', async () => {
|
||||
spyHttpClient
|
||||
.mockReturnValueOnce({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: manifestData as IZuluVersions[]
|
||||
})
|
||||
.mockReturnValueOnce({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: [] as IZuluVersions[]
|
||||
});
|
||||
|
||||
const distribution = new ZuluDistribution({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
@@ -168,10 +185,11 @@ describe('getAvailableVersions', () => {
|
||||
|
||||
describe('getArchitectureOptions', () => {
|
||||
it.each([
|
||||
[{architecture: 'x64'}, {arch: 'x86', hw_bitness: '64', abi: ''}],
|
||||
[{architecture: 'x86'}, {arch: 'x86', hw_bitness: '32', abi: ''}],
|
||||
[{architecture: 'x32'}, {arch: 'x32', hw_bitness: '', abi: ''}],
|
||||
[{architecture: 'arm'}, {arch: 'arm', hw_bitness: '', abi: ''}]
|
||||
[{architecture: 'x64'}, 'x64'],
|
||||
[{architecture: 'x86'}, 'i686'],
|
||||
[{architecture: 'aarch64'}, 'aarch64'],
|
||||
[{architecture: 'arm64'}, 'aarch64'],
|
||||
[{architecture: 'arm'}, 'arm']
|
||||
])('%s -> %s', (input, expected) => {
|
||||
const distribution = new ZuluDistribution({
|
||||
version: '11',
|
||||
@@ -179,7 +197,7 @@ describe('getArchitectureOptions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
});
|
||||
expect(distribution['getArchitectureOptions']()).toEqual(expected);
|
||||
expect(distribution['getArchitectureOptions']()).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ describe('getAvailableVersions', () => {
|
||||
spyHttpClient.mockReturnValue({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: manifestData as IZuluVersions[]
|
||||
result: [] as IZuluVersions[]
|
||||
});
|
||||
|
||||
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
||||
@@ -46,7 +46,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=32&release_status=ga'
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=i686&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -55,7 +55,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=32&release_status=ea'
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=i686&release_status=ea&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -64,7 +64,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jdk&javafx=false&arch=x86&hw_bitness=64&release_status=ga'
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -73,7 +73,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jre',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jre&javafx=false&arch=x86&hw_bitness=64&release_status=ga'
|
||||
'?os=windows&archive_type=zip&java_package_type=jre&javafx_bundled=false&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -82,7 +82,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk+fx',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jdk&javafx=true&arch=x86&hw_bitness=64&release_status=ga&features=fx'
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=true&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -91,7 +91,16 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jre+fx',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jre&javafx=true&arch=x86&hw_bitness=64&release_status=ga&features=fx'
|
||||
'?os=windows&archive_type=zip&java_package_type=jre&javafx_bundled=true&crac_supported=false&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
version: '8',
|
||||
architecture: 'x64',
|
||||
packageType: 'jdk+crac',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=true&arch=x64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -100,7 +109,7 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jdk&javafx=false&arch=arm&hw_bitness=64&release_status=ga'
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=aarch64&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
],
|
||||
[
|
||||
{
|
||||
@@ -109,12 +118,12 @@ describe('getAvailableVersions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
},
|
||||
'?os=windows&ext=zip&bundle_type=jdk&javafx=false&arch=arm&hw_bitness=&release_status=ga'
|
||||
'?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=arm&release_status=ga&availability_types=ca&page=1&page_size=100'
|
||||
]
|
||||
])('build correct url for %s -> %s', async (input, parsedUrl) => {
|
||||
const distribution = new ZuluDistribution(input);
|
||||
distribution['getPlatformOption'] = () => 'windows';
|
||||
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/${parsedUrl}`;
|
||||
const buildUrl = `https://api.azul.com/metadata/v1/zulu/packages/${parsedUrl}`;
|
||||
|
||||
await distribution['getAvailableVersions']();
|
||||
|
||||
@@ -122,16 +131,12 @@ describe('getAvailableVersions', () => {
|
||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||
});
|
||||
|
||||
type DistroArch = {
|
||||
bitness: string;
|
||||
arch: string;
|
||||
};
|
||||
it.each([
|
||||
['amd64', {bitness: '64', arch: 'x86'}],
|
||||
['arm64', {bitness: '64', arch: 'arm'}]
|
||||
['amd64', 'x64'],
|
||||
['arm64', 'aarch64']
|
||||
])(
|
||||
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||
async (osArch: string, distroArch: DistroArch) => {
|
||||
async (osArch: string, distroArch: string) => {
|
||||
jest
|
||||
.spyOn(os, 'arch')
|
||||
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
||||
@@ -143,7 +148,7 @@ describe('getAvailableVersions', () => {
|
||||
checkLatest: false
|
||||
});
|
||||
distribution['getPlatformOption'] = () => 'windows';
|
||||
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?os=windows&ext=zip&bundle_type=jdk&javafx=false&arch=${distroArch.arch}&hw_bitness=${distroArch.bitness}&release_status=ga`;
|
||||
const buildUrl = `https://api.azul.com/metadata/v1/zulu/packages/?os=windows&archive_type=zip&java_package_type=jdk&javafx_bundled=false&crac_supported=false&arch=${distroArch}&release_status=ga&availability_types=ca&page=1&page_size=100`;
|
||||
|
||||
await distribution['getAvailableVersions']();
|
||||
|
||||
@@ -153,6 +158,18 @@ describe('getAvailableVersions', () => {
|
||||
);
|
||||
|
||||
it('load available versions', async () => {
|
||||
spyHttpClient
|
||||
.mockReturnValueOnce({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: manifestData as IZuluVersions[]
|
||||
})
|
||||
.mockReturnValueOnce({
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
result: [] as IZuluVersions[]
|
||||
});
|
||||
|
||||
const distribution = new ZuluDistribution({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
@@ -166,10 +183,11 @@ describe('getAvailableVersions', () => {
|
||||
|
||||
describe('getArchitectureOptions', () => {
|
||||
it.each([
|
||||
[{architecture: 'x64'}, {arch: 'x86', hw_bitness: '64', abi: ''}],
|
||||
[{architecture: 'x86'}, {arch: 'x86', hw_bitness: '32', abi: ''}],
|
||||
[{architecture: 'x32'}, {arch: 'x32', hw_bitness: '', abi: ''}],
|
||||
[{architecture: 'arm'}, {arch: 'arm', hw_bitness: '', abi: ''}]
|
||||
[{architecture: 'x64'}, 'x64'],
|
||||
[{architecture: 'x86'}, 'i686'],
|
||||
[{architecture: 'aarch64'}, 'aarch64'],
|
||||
[{architecture: 'arm64'}, 'aarch64'],
|
||||
[{architecture: 'arm'}, 'arm']
|
||||
])('%s -> %s', (input, expected) => {
|
||||
const distribution = new ZuluDistribution({
|
||||
version: '11',
|
||||
@@ -177,7 +195,7 @@ describe('getArchitectureOptions', () => {
|
||||
packageType: 'jdk',
|
||||
checkLatest: false
|
||||
});
|
||||
expect(distribution['getArchitectureOptions']()).toEqual(expected);
|
||||
expect(distribution['getArchitectureOptions']()).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -166,15 +166,60 @@ describe('validatePaginationUrl', () => {
|
||||
describe('getVersionFromFileContent', () => {
|
||||
describe('.sdkmanrc', () => {
|
||||
it.each([
|
||||
['java=11.0.20.1-tem', '11.0.20'],
|
||||
['java = 11.0.20.1-tem', '11.0.20'],
|
||||
['java=11.0.20.1-tem # a comment in sdkmanrc', '11.0.20'],
|
||||
['java=11.0.20.1-tem\n#java=21.0.20.1-tem\n', '11.0.20'], // choose first match
|
||||
['java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '11.0.20'], // choose first match
|
||||
['#java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '21.0.20'] // first one is 'commented' in .sdkmanrc
|
||||
])('parsing %s should return %s', (content: string, expected: string) => {
|
||||
const actual = getVersionFromFileContent(content, 'openjdk', '.sdkmanrc');
|
||||
expect(actual).toBe(expected);
|
||||
['java=11.0.20.1-tem', '11.0.20', 'temurin'],
|
||||
['java = 11.0.20.1-tem', '11.0.20', 'temurin'],
|
||||
['java=11.0.20.1-tem # a comment in sdkmanrc', '11.0.20', 'temurin'],
|
||||
['java=11.0.20.1-tem\n#java=21.0.20.1-tem\n', '11.0.20', 'temurin'], // choose first match
|
||||
['java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '11.0.20', 'temurin'], // choose first match
|
||||
['#java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '21.0.20', 'temurin'], // first one is 'commented' in .sdkmanrc
|
||||
['java=21.0.5-zulu', '21.0.5', 'zulu'],
|
||||
['java=17.0.13-albba', '17.0.13', 'dragonwell'],
|
||||
['java=17.0.13-amzn', '17', 'corretto'],
|
||||
['java=21.0.5-graal', '21.0.5', 'graalvm'],
|
||||
['java=17.0.9-graalce', '17.0.9', 'graalvm'],
|
||||
['java=11.0.25-librca', '11.0.25', 'liberica'],
|
||||
['java=11.0.25-ms', '11.0.25', 'microsoft'],
|
||||
['java=21.0.5-oracle', '21.0.5', 'oracle'],
|
||||
['java=11.0.25-sapmchn', '11.0.25', 'sapmachine'],
|
||||
['java=21.0.5-jbr', '21.0.5', 'jetbrains'],
|
||||
['java=11.0.25-sem', '11.0.25', 'semeru'],
|
||||
['java=17.0.13-dragonwell', '17.0.13', 'dragonwell'],
|
||||
['java=21.0.5-kona', '21.0.5', 'kona']
|
||||
])(
|
||||
'parsing %s should return version %s and distribution %s',
|
||||
(content: string, expectedVersion: string, expectedDist: string) => {
|
||||
const actual = getVersionFromFileContent(
|
||||
content,
|
||||
'openjdk',
|
||||
'.sdkmanrc'
|
||||
);
|
||||
expect(actual?.version).toBe(expectedVersion);
|
||||
expect(actual?.distribution).toBe(expectedDist);
|
||||
}
|
||||
);
|
||||
|
||||
it('should warn and return undefined distribution for unknown identifier', () => {
|
||||
const warnSpy = jest.spyOn(core, 'warning');
|
||||
const actual = getVersionFromFileContent(
|
||||
'java=21.0.5-unknown',
|
||||
'temurin',
|
||||
'.sdkmanrc'
|
||||
);
|
||||
expect(actual?.version).toBe('21.0.5');
|
||||
expect(actual?.distribution).toBeUndefined();
|
||||
expect(warnSpy).toHaveBeenCalledWith(
|
||||
expect.stringContaining('Unknown SDKMAN distribution identifier')
|
||||
);
|
||||
});
|
||||
|
||||
it('should return version without distribution when no suffix provided', () => {
|
||||
const actual = getVersionFromFileContent(
|
||||
'java=11.0.20',
|
||||
'temurin',
|
||||
'.sdkmanrc'
|
||||
);
|
||||
expect(actual?.version).toBe('11.0.20');
|
||||
expect(actual?.distribution).toBeUndefined();
|
||||
});
|
||||
|
||||
describe('known versions', () => {
|
||||
@@ -193,11 +238,77 @@ describe('getVersionFromFileContent', () => {
|
||||
'openjdk',
|
||||
'.sdkmanrc'
|
||||
);
|
||||
expect(actual).toBe(expected);
|
||||
expect(actual?.version).toBe(expected);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('.tool-versions', () => {
|
||||
it.each([
|
||||
['java temurin-17.0.3+7', '17.0.3+7', 'temurin'],
|
||||
['java temurin-jre-17.0.3+7', '17.0.3+7', 'temurin'],
|
||||
['java adoptopenjdk-11.0.16+8', '11.0.16+8', 'temurin'],
|
||||
['java adoptopenjdk-openj9-11.0.16+8', '11.0.16+8', 'temurin'],
|
||||
['java zulu-11.56.19', '11.56.19', 'zulu'],
|
||||
['java corretto-17.0.13.11.1', '17', 'corretto'], // corretto -> major only
|
||||
['java liberica-11.0.15+10', '11.0.15+10', 'liberica'],
|
||||
['java microsoft-11.0.13.8.1', '11.0.13', 'microsoft'],
|
||||
['java semeru-openj9-11.0.25+9', '11.0.25+9', 'semeru'],
|
||||
['java ibm-openj9-11.0.25+9', '11.0.25+9', 'semeru'],
|
||||
['java dragonwell-17.0.13.0.13+11', '17.0.13', 'dragonwell'],
|
||||
['java graalvm-22.3.0+java17', '22.3.0+java17', 'graalvm'],
|
||||
['java graalvm-community-22.3.0', '22.3.0', 'graalvm-community'],
|
||||
['java oracle-graalvm-21.0.5', '21.0.5', 'graalvm'],
|
||||
['java oracle-21.0.5', '21.0.5', 'oracle'],
|
||||
['java sapmachine-21.0.5', '21.0.5', 'sapmachine'],
|
||||
['java kona-17.0.13', '17.0.13', 'kona'],
|
||||
['java jetbrains-21.0.5', '21.0.5', 'jetbrains']
|
||||
])(
|
||||
'parsing %s should return version %s and distribution %s',
|
||||
(content: string, expectedVersion: string, expectedDist: string) => {
|
||||
const actual = getVersionFromFileContent(
|
||||
content,
|
||||
'openjdk',
|
||||
'.tool-versions'
|
||||
);
|
||||
expect(actual?.version).toBe(expectedVersion);
|
||||
expect(actual?.distribution).toBe(expectedDist);
|
||||
}
|
||||
);
|
||||
|
||||
it.each([
|
||||
['java 17.0.7', '17.0.7'],
|
||||
['java 17', '17'],
|
||||
['java 1.8', '8'],
|
||||
['java 21-ea', '21-ea']
|
||||
])(
|
||||
'parsing prefix-less %s should return version %s and no distribution',
|
||||
(content: string, expectedVersion: string) => {
|
||||
const actual = getVersionFromFileContent(
|
||||
content,
|
||||
'temurin',
|
||||
'.tool-versions'
|
||||
);
|
||||
expect(actual?.version).toBe(expectedVersion);
|
||||
expect(actual?.distribution).toBeUndefined();
|
||||
}
|
||||
);
|
||||
|
||||
it('should warn and return undefined distribution for unsupported vendor', () => {
|
||||
const warnSpy = jest.spyOn(core, 'warning');
|
||||
const actual = getVersionFromFileContent(
|
||||
'java openjdk-17.0.7',
|
||||
'temurin',
|
||||
'.tool-versions'
|
||||
);
|
||||
expect(actual?.version).toBe('17.0.7');
|
||||
expect(actual?.distribution).toBeUndefined();
|
||||
expect(warnSpy).toHaveBeenCalledWith(
|
||||
expect.stringContaining('Unknown asdf distribution identifier')
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('isGhes', () => {
|
||||
|
||||
18
action.yml
18
action.yml
@@ -10,22 +10,30 @@ inputs:
|
||||
description: 'The path to a file containing the Java version to set up (.java-version, .tool-versions, .sdkmanrc). Used when java-version is not set. See examples of supported syntax in README file'
|
||||
required: false
|
||||
distribution:
|
||||
description: 'Java distribution. See the list of supported distributions in README file'
|
||||
required: true
|
||||
description: 'Java distribution. See the list of supported distributions in README file. This input is required except when java-version-file points to .sdkmanrc with a recognized distribution suffix (e.g., java=21.0.5-tem).'
|
||||
required: false
|
||||
java-package:
|
||||
description: 'The package type (jdk, jre, jdk+fx, jre+fx)'
|
||||
description: 'The package type (jdk, jre, jdk+fx, jre+fx, jdk+crac, jre+crac)'
|
||||
required: false
|
||||
default: 'jdk'
|
||||
architecture:
|
||||
description: "The architecture of the package (defaults to the action runner's architecture)"
|
||||
required: false
|
||||
jdkFile:
|
||||
jdk-file:
|
||||
description: 'Path to where the compressed JDK is located'
|
||||
required: false
|
||||
jdkFile:
|
||||
description: 'Deprecated alias for `jdk-file`. Path to where the compressed JDK is located. Use `jdk-file` instead; this alias may be removed in a future release.'
|
||||
required: false
|
||||
deprecationMessage: 'The `jdkFile` input is deprecated. Use `jdk-file` instead.'
|
||||
check-latest:
|
||||
description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec'
|
||||
required: false
|
||||
default: false
|
||||
set-default:
|
||||
description: 'Set this option to false if you want to install a JDK but not make it the default. When false, JAVA_HOME and PATH are not updated, but JAVA_HOME_<major>_<arch> is still set.'
|
||||
required: false
|
||||
default: true
|
||||
verify-signature:
|
||||
description: 'Verify downloaded Java package signatures when supported by the selected distribution'
|
||||
required: false
|
||||
@@ -95,6 +103,8 @@ outputs:
|
||||
description: 'Path to where the java environment has been installed (same as $JAVA_HOME)'
|
||||
cache-hit:
|
||||
description: 'A boolean value to indicate an exact match was found for the primary key'
|
||||
cache-primary-key:
|
||||
description: 'The primary cache key computed by the action for the configured build tool. Empty when caching is not enabled or when caching is skipped (e.g. cache service unavailable). Useful for composing with actions/cache or actions/cache/restore across jobs.'
|
||||
runs:
|
||||
using: 'node24'
|
||||
main: 'dist/setup/index.js'
|
||||
|
||||
115
dist/cleanup/index.js
vendored
115
dist/cleanup/index.js
vendored
@@ -51973,7 +51973,11 @@ const supportedPackageManager = [
|
||||
(0, path_1.join)(os_1.default.homedir(), '.m2', 'wrapper', 'dists')
|
||||
],
|
||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---maven
|
||||
pattern: ['**/pom.xml', '**/.mvn/wrapper/maven-wrapper.properties']
|
||||
pattern: [
|
||||
'**/pom.xml',
|
||||
'**/.mvn/wrapper/maven-wrapper.properties',
|
||||
'**/.mvn/extensions.xml'
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'gradle',
|
||||
@@ -52052,6 +52056,7 @@ function restore(id, cacheDependencyPath) {
|
||||
const primaryKey = yield computeCacheKey(packageManager, cacheDependencyPath);
|
||||
core.debug(`primary key is ${primaryKey}`);
|
||||
core.saveState(STATE_CACHE_PRIMARY_KEY, primaryKey);
|
||||
core.setOutput(STATE_CACHE_PRIMARY_KEY, primaryKey);
|
||||
// No "restoreKeys" is set, to start with a clear cache after dependency update (see https://github.com/actions/setup-java/issues/269)
|
||||
const matchedKey = yield cache.restoreCache(packageManager.path, primaryKey);
|
||||
if (matchedKey) {
|
||||
@@ -52241,15 +52246,17 @@ else {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.DISTRIBUTIONS_ONLY_MAJOR_VERSION = exports.MAVEN_NO_TRANSFER_PROGRESS_LONG_FLAG = exports.MAVEN_NO_TRANSFER_PROGRESS_FLAG = exports.MAVEN_ARGS_ENV = exports.INPUT_SHOW_DOWNLOAD_PROGRESS = exports.INPUT_MVN_TOOLCHAIN_VENDOR = exports.INPUT_MVN_TOOLCHAIN_ID = exports.MVN_TOOLCHAINS_FILE = exports.MVN_SETTINGS_FILE = exports.M2_DIR = exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_JOB_STATUS = exports.INPUT_CACHE_DEPENDENCY_PATH = exports.INPUT_CACHE = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = exports.INPUT_VERIFY_SIGNATURE = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION_FILE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0;
|
||||
exports.DISTRIBUTIONS_ONLY_MAJOR_VERSION = exports.MAVEN_NO_TRANSFER_PROGRESS_LONG_FLAG = exports.MAVEN_NO_TRANSFER_PROGRESS_FLAG = exports.MAVEN_ARGS_ENV = exports.INPUT_SHOW_DOWNLOAD_PROGRESS = exports.INPUT_MVN_TOOLCHAIN_VENDOR = exports.INPUT_MVN_TOOLCHAIN_ID = exports.MVN_TOOLCHAINS_FILE = exports.MVN_SETTINGS_FILE = exports.M2_DIR = exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_JOB_STATUS = exports.INPUT_CACHE_DEPENDENCY_PATH = exports.INPUT_CACHE = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = exports.INPUT_VERIFY_SIGNATURE = exports.INPUT_SET_DEFAULT = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE_DEPRECATED = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION_FILE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0;
|
||||
exports.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home';
|
||||
exports.INPUT_JAVA_VERSION = 'java-version';
|
||||
exports.INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
||||
exports.INPUT_ARCHITECTURE = 'architecture';
|
||||
exports.INPUT_JAVA_PACKAGE = 'java-package';
|
||||
exports.INPUT_DISTRIBUTION = 'distribution';
|
||||
exports.INPUT_JDK_FILE = 'jdkFile';
|
||||
exports.INPUT_JDK_FILE = 'jdk-file';
|
||||
exports.INPUT_JDK_FILE_DEPRECATED = 'jdkFile';
|
||||
exports.INPUT_CHECK_LATEST = 'check-latest';
|
||||
exports.INPUT_SET_DEFAULT = 'set-default';
|
||||
exports.INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
||||
exports.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = 'verify-signature-public-key';
|
||||
exports.INPUT_SERVER_ID = 'server-id';
|
||||
@@ -52571,25 +52578,45 @@ function isCacheFeatureAvailable() {
|
||||
}
|
||||
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
||||
function getVersionFromFileContent(content, distributionName, versionFile) {
|
||||
var _a, _b, _c, _d, _e;
|
||||
var _a, _b, _c, _d;
|
||||
let javaVersionRegExp;
|
||||
let extractedDistribution;
|
||||
function getFileName(versionFile) {
|
||||
return path_1.default.basename(versionFile);
|
||||
}
|
||||
const versionFileName = getFileName(versionFile);
|
||||
if (versionFileName == '.tool-versions') {
|
||||
// Capture an optional asdf-java vendor prefix (e.g. `temurin-`, `corretto-`)
|
||||
// in the `distribution` group so it can be mapped to a setup-java distribution.
|
||||
javaVersionRegExp =
|
||||
/^java\s+(?:\S*-)?(?<version>\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im;
|
||||
/^java\s+(?:(?<distribution>\S*)-)?(?<version>\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im;
|
||||
}
|
||||
else if (versionFileName == '.sdkmanrc') {
|
||||
javaVersionRegExp = /^java\s*=\s*(?<version>[^-]+)/m;
|
||||
// Match both version and optional distribution identifier
|
||||
javaVersionRegExp =
|
||||
/^java\s*=\s*(?<version>[^-\s]+)(?:-(?<distribution>[a-z0-9]+))?/m;
|
||||
}
|
||||
else {
|
||||
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
||||
}
|
||||
const capturedVersion = ((_b = (_a = content.match(javaVersionRegExp)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.version)
|
||||
? (_d = (_c = content.match(javaVersionRegExp)) === null || _c === void 0 ? void 0 : _c.groups) === null || _d === void 0 ? void 0 : _d.version
|
||||
const match = content.match(javaVersionRegExp);
|
||||
const capturedVersion = ((_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.version)
|
||||
? match.groups.version
|
||||
: '';
|
||||
// Extract distribution from .sdkmanrc file
|
||||
if (versionFileName == '.sdkmanrc' && ((_b = match === null || match === void 0 ? void 0 : match.groups) === null || _b === void 0 ? void 0 : _b.distribution)) {
|
||||
const sdkmanDist = match.groups.distribution;
|
||||
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
||||
core.debug(`Parsed distribution '${extractedDistribution}' from SDKMAN identifier '${sdkmanDist}'`);
|
||||
}
|
||||
// Extract distribution from asdf .tool-versions file
|
||||
if (versionFileName == '.tool-versions' && ((_c = match === null || match === void 0 ? void 0 : match.groups) === null || _c === void 0 ? void 0 : _c.distribution)) {
|
||||
const asdfDist = match.groups.distribution;
|
||||
extractedDistribution = mapAsdfDistribution(asdfDist);
|
||||
if (extractedDistribution) {
|
||||
core.debug(`Parsed distribution '${extractedDistribution}' from asdf identifier '${asdfDist}'`);
|
||||
}
|
||||
}
|
||||
core.debug(`Parsed version '${capturedVersion}' from file '${versionFileName}'`);
|
||||
if (!capturedVersion) {
|
||||
return null;
|
||||
@@ -52603,13 +52630,79 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
||||
if (!version) {
|
||||
return null;
|
||||
}
|
||||
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(distributionName)) {
|
||||
const coerceVersion = (_e = semver.coerce(version)) !== null && _e !== void 0 ? _e : version;
|
||||
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
||||
// (either explicitly provided or extracted from the version file) is in the list.
|
||||
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) {
|
||||
const coerceVersion = (_d = semver.coerce(version)) !== null && _d !== void 0 ? _d : version;
|
||||
version = semver.major(coerceVersion).toString();
|
||||
}
|
||||
return version.toString();
|
||||
return {
|
||||
version: version.toString(),
|
||||
distribution: extractedDistribution
|
||||
};
|
||||
}
|
||||
exports.getVersionFromFileContent = getVersionFromFileContent;
|
||||
// Map SDKMAN distribution identifiers to setup-java distribution names
|
||||
function mapSdkmanDistribution(sdkmanDist) {
|
||||
const distributionMap = {
|
||||
tem: 'temurin',
|
||||
sem: 'semeru',
|
||||
albba: 'dragonwell',
|
||||
zulu: 'zulu',
|
||||
amzn: 'corretto',
|
||||
graal: 'graalvm',
|
||||
graalce: 'graalvm',
|
||||
librca: 'liberica',
|
||||
ms: 'microsoft',
|
||||
oracle: 'oracle',
|
||||
sapmchn: 'sapmachine',
|
||||
jbr: 'jetbrains',
|
||||
dragonwell: 'dragonwell',
|
||||
kona: 'kona'
|
||||
};
|
||||
const mapped = distributionMap[sdkmanDist.toLowerCase()];
|
||||
if (!mapped) {
|
||||
core.warning(`Unknown SDKMAN distribution identifier '${sdkmanDist}'. Please specify the distribution explicitly.`);
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
// Map asdf-java (.tool-versions) vendor identifiers to setup-java distribution names.
|
||||
// asdf-java encodes the vendor as a prefix on the version string, e.g.
|
||||
// `java temurin-17.0.3+7` or `java semeru-openj9-11.0.25+9`. Packaging variants
|
||||
// (`-jre`, `-musl`, `-openj9`, `-crac`, `-javafx`, ...) are collapsed onto the
|
||||
// base vendor since setup-java does not distinguish them here.
|
||||
function mapAsdfDistribution(asdfDist) {
|
||||
const normalized = asdfDist.toLowerCase();
|
||||
// Multi-segment vendors that map to a distinct setup-java distribution.
|
||||
if (normalized.startsWith('graalvm-community')) {
|
||||
return 'graalvm-community';
|
||||
}
|
||||
if (normalized.startsWith('oracle-graalvm')) {
|
||||
return 'graalvm';
|
||||
}
|
||||
const baseVendor = normalized.split('-')[0];
|
||||
const distributionMap = {
|
||||
temurin: 'temurin',
|
||||
adoptopenjdk: 'temurin',
|
||||
zulu: 'zulu',
|
||||
corretto: 'corretto',
|
||||
liberica: 'liberica',
|
||||
microsoft: 'microsoft',
|
||||
semeru: 'semeru',
|
||||
ibm: 'semeru',
|
||||
dragonwell: 'dragonwell',
|
||||
graalvm: 'graalvm',
|
||||
oracle: 'oracle',
|
||||
sapmachine: 'sapmachine',
|
||||
kona: 'kona',
|
||||
jetbrains: 'jetbrains'
|
||||
};
|
||||
const mapped = distributionMap[baseVendor];
|
||||
if (!mapped) {
|
||||
core.warning(`Unknown asdf distribution identifier '${asdfDist}'. Please specify the distribution explicitly.`);
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
|
||||
function avoidOldNotation(content) {
|
||||
return content.startsWith('1.') ? content.substring(2) : content;
|
||||
|
||||
305
dist/setup/index.js
vendored
305
dist/setup/index.js
vendored
@@ -77838,7 +77838,11 @@ const supportedPackageManager = [
|
||||
(0, path_1.join)(os_1.default.homedir(), '.m2', 'wrapper', 'dists')
|
||||
],
|
||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---maven
|
||||
pattern: ['**/pom.xml', '**/.mvn/wrapper/maven-wrapper.properties']
|
||||
pattern: [
|
||||
'**/pom.xml',
|
||||
'**/.mvn/wrapper/maven-wrapper.properties',
|
||||
'**/.mvn/extensions.xml'
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'gradle',
|
||||
@@ -77917,6 +77921,7 @@ function restore(id, cacheDependencyPath) {
|
||||
const primaryKey = yield computeCacheKey(packageManager, cacheDependencyPath);
|
||||
core.debug(`primary key is ${primaryKey}`);
|
||||
core.saveState(STATE_CACHE_PRIMARY_KEY, primaryKey);
|
||||
core.setOutput(STATE_CACHE_PRIMARY_KEY, primaryKey);
|
||||
// No "restoreKeys" is set, to start with a clear cache after dependency update (see https://github.com/actions/setup-java/issues/269)
|
||||
const matchedKey = yield cache.restoreCache(packageManager.path, primaryKey);
|
||||
if (matchedKey) {
|
||||
@@ -78001,15 +78006,17 @@ function isProbablyGradleDaemonProblem(packageManager, error) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.DISTRIBUTIONS_ONLY_MAJOR_VERSION = exports.MAVEN_NO_TRANSFER_PROGRESS_LONG_FLAG = exports.MAVEN_NO_TRANSFER_PROGRESS_FLAG = exports.MAVEN_ARGS_ENV = exports.INPUT_SHOW_DOWNLOAD_PROGRESS = exports.INPUT_MVN_TOOLCHAIN_VENDOR = exports.INPUT_MVN_TOOLCHAIN_ID = exports.MVN_TOOLCHAINS_FILE = exports.MVN_SETTINGS_FILE = exports.M2_DIR = exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_JOB_STATUS = exports.INPUT_CACHE_DEPENDENCY_PATH = exports.INPUT_CACHE = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = exports.INPUT_VERIFY_SIGNATURE = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION_FILE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0;
|
||||
exports.DISTRIBUTIONS_ONLY_MAJOR_VERSION = exports.MAVEN_NO_TRANSFER_PROGRESS_LONG_FLAG = exports.MAVEN_NO_TRANSFER_PROGRESS_FLAG = exports.MAVEN_ARGS_ENV = exports.INPUT_SHOW_DOWNLOAD_PROGRESS = exports.INPUT_MVN_TOOLCHAIN_VENDOR = exports.INPUT_MVN_TOOLCHAIN_ID = exports.MVN_TOOLCHAINS_FILE = exports.MVN_SETTINGS_FILE = exports.M2_DIR = exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_JOB_STATUS = exports.INPUT_CACHE_DEPENDENCY_PATH = exports.INPUT_CACHE = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = exports.INPUT_VERIFY_SIGNATURE = exports.INPUT_SET_DEFAULT = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE_DEPRECATED = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION_FILE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0;
|
||||
exports.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home';
|
||||
exports.INPUT_JAVA_VERSION = 'java-version';
|
||||
exports.INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
||||
exports.INPUT_ARCHITECTURE = 'architecture';
|
||||
exports.INPUT_JAVA_PACKAGE = 'java-package';
|
||||
exports.INPUT_DISTRIBUTION = 'distribution';
|
||||
exports.INPUT_JDK_FILE = 'jdkFile';
|
||||
exports.INPUT_JDK_FILE = 'jdk-file';
|
||||
exports.INPUT_JDK_FILE_DEPRECATED = 'jdkFile';
|
||||
exports.INPUT_CHECK_LATEST = 'check-latest';
|
||||
exports.INPUT_SET_DEFAULT = 'set-default';
|
||||
exports.INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
||||
exports.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = 'verify-signature-public-key';
|
||||
exports.INPUT_SERVER_ID = 'server-id';
|
||||
@@ -78325,6 +78332,10 @@ class JavaBase {
|
||||
this.architecture = installerOptions.architecture || os_1.default.arch();
|
||||
this.packageType = installerOptions.packageType;
|
||||
this.checkLatest = installerOptions.checkLatest;
|
||||
this.setDefault =
|
||||
installerOptions.setDefault !== undefined
|
||||
? installerOptions.setDefault
|
||||
: true;
|
||||
this.verifySignature = (_a = installerOptions.verifySignature) !== null && _a !== void 0 ? _a : false;
|
||||
this.verifySignaturePublicKey = installerOptions.verifySignaturePublicKey;
|
||||
}
|
||||
@@ -78445,8 +78456,14 @@ class JavaBase {
|
||||
if (process.platform === 'darwin' && fs.existsSync(macOSPostfixPath)) {
|
||||
foundJava.path = macOSPostfixPath;
|
||||
}
|
||||
core.info(`Setting Java ${foundJava.version} as the default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
if (this.setDefault) {
|
||||
core.info(`Setting Java ${foundJava.version} as the default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
}
|
||||
else {
|
||||
core.info(`Installing Java ${foundJava.version} (not setting as default)`);
|
||||
this.setJavaEnvironment(foundJava.version, foundJava.path);
|
||||
}
|
||||
return foundJava;
|
||||
});
|
||||
}
|
||||
@@ -78547,9 +78564,12 @@ class JavaBase {
|
||||
return error;
|
||||
}
|
||||
setJavaDefault(version, toolPath) {
|
||||
const majorVersion = version.split('.')[0];
|
||||
core.exportVariable('JAVA_HOME', toolPath);
|
||||
core.addPath(path_1.default.join(toolPath, 'bin'));
|
||||
this.setJavaEnvironment(version, toolPath);
|
||||
}
|
||||
setJavaEnvironment(version, toolPath) {
|
||||
const majorVersion = version.split('.')[0];
|
||||
core.setOutput('distribution', this.distribution);
|
||||
core.setOutput('path', toolPath);
|
||||
core.setOutput('version', version);
|
||||
@@ -80048,8 +80068,14 @@ class LocalDistribution extends base_installer_1.JavaBase {
|
||||
if (process.platform === 'darwin' && fs_1.default.existsSync(macOSPostfixPath)) {
|
||||
foundJava.path = macOSPostfixPath;
|
||||
}
|
||||
core.info(`Setting Java ${foundJava.version} as default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
if (this.setDefault) {
|
||||
core.info(`Setting Java ${foundJava.version} as the default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
}
|
||||
else {
|
||||
core.info(`Installing Java ${foundJava.version} (not setting as default)`);
|
||||
this.setJavaEnvironment(foundJava.version, foundJava.path);
|
||||
}
|
||||
return foundJava;
|
||||
});
|
||||
}
|
||||
@@ -81130,16 +81156,22 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const availableVersionsRaw = yield this.getAvailableVersions();
|
||||
const availableVersions = availableVersionsRaw.map(item => {
|
||||
// The Azul Metadata API reports the JDK build number separately from
|
||||
// java_version (e.g. java_version=[17,0,7], openjdk_build_number=7).
|
||||
// Append it so the resulting semver retains the build (e.g. 17.0.7+7).
|
||||
const javaVersion = item.openjdk_build_number != null
|
||||
? [...item.java_version, item.openjdk_build_number]
|
||||
: item.java_version;
|
||||
return {
|
||||
version: (0, util_1.convertVersionToSemver)(item.jdk_version),
|
||||
url: item.url,
|
||||
zuluVersion: (0, util_1.convertVersionToSemver)(item.zulu_version)
|
||||
version: (0, util_1.convertVersionToSemver)(javaVersion),
|
||||
url: item.download_url,
|
||||
zuluVersion: (0, util_1.convertVersionToSemver)(item.distro_version)
|
||||
};
|
||||
});
|
||||
const satisfiedVersions = availableVersions
|
||||
.filter(item => (0, util_1.isVersionSatisfies)(version, item.version))
|
||||
.sort((a, b) => {
|
||||
// Azul provides two versions: jdk_version and azul_version
|
||||
// Azul provides two versions: java_version and distro_version
|
||||
// we should sort by both fields by descending
|
||||
return (-semver_1.default.compareBuild(a.version, b.version) ||
|
||||
-semver_1.default.compareBuild(a.zuluVersion, b.zuluVersion));
|
||||
@@ -81177,37 +81209,60 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
||||
getAvailableVersions() {
|
||||
var _a, _b;
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const { arch, hw_bitness, abi } = this.getArchitectureOptions();
|
||||
const arch = this.getArchitectureOptions();
|
||||
const [bundleType, features] = this.packageType.split('+');
|
||||
const platform = this.getPlatformOption();
|
||||
const extension = (0, util_1.getDownloadArchiveExtension)();
|
||||
const javafx = (_a = features === null || features === void 0 ? void 0 : features.includes('fx')) !== null && _a !== void 0 ? _a : false;
|
||||
const crac = (_b = features === null || features === void 0 ? void 0 : features.includes('crac')) !== null && _b !== void 0 ? _b : false;
|
||||
const releaseStatus = this.stable ? 'ga' : 'ea';
|
||||
if (core.isDebug()) {
|
||||
console.time('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||
}
|
||||
const requestArguments = [
|
||||
const baseRequestArguments = [
|
||||
`os=${platform}`,
|
||||
`ext=${extension}`,
|
||||
`bundle_type=${bundleType}`,
|
||||
`javafx=${javafx}`,
|
||||
`archive_type=${extension}`,
|
||||
`java_package_type=${bundleType}`,
|
||||
`javafx_bundled=${javafx}`,
|
||||
`crac_supported=${crac}`,
|
||||
`arch=${arch}`,
|
||||
`hw_bitness=${hw_bitness}`,
|
||||
`release_status=${releaseStatus}`,
|
||||
abi ? `abi=${abi}` : null,
|
||||
features ? `features=${features}` : null
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join('&');
|
||||
const availableVersionsUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?${requestArguments}`;
|
||||
core.debug(`Gathering available versions from '${availableVersionsUrl}'`);
|
||||
const availableVersions = (_b = (yield this.http.getJson(availableVersionsUrl))
|
||||
.result) !== null && _b !== void 0 ? _b : [];
|
||||
`availability_types=ca`
|
||||
].join('&');
|
||||
// Need to iterate through all pages to retrieve the list of all versions.
|
||||
// The Azul API doesn't return a total page count, so paginate until a page
|
||||
// comes back empty (or short), guarding against a runaway loop with a cap.
|
||||
const pageSize = 100;
|
||||
const maxPages = 100;
|
||||
let pageIndex = 1;
|
||||
const availableVersions = [];
|
||||
while (pageIndex <= maxPages) {
|
||||
const requestArguments = `${baseRequestArguments}&page=${pageIndex}&page_size=${pageSize}`;
|
||||
const availableVersionsUrl = `https://api.azul.com/metadata/v1/zulu/packages/?${requestArguments}`;
|
||||
if (core.isDebug() && pageIndex === 1) {
|
||||
// the url is identical except for the page number, so print it once for debug
|
||||
core.debug(`Gathering available versions from '${availableVersionsUrl}'`);
|
||||
}
|
||||
const paginationPage = (yield this.http.getJson(availableVersionsUrl)).result;
|
||||
if (!paginationPage || paginationPage.length === 0) {
|
||||
// stop paginating because we have reached the end of the results
|
||||
break;
|
||||
}
|
||||
availableVersions.push(...paginationPage);
|
||||
if (paginationPage.length < pageSize) {
|
||||
// a short page means this was the last one; avoid an extra empty request
|
||||
break;
|
||||
}
|
||||
pageIndex++;
|
||||
}
|
||||
if (pageIndex > maxPages) {
|
||||
core.warning(`Reached the maximum of ${maxPages} pages while listing Zulu versions; results may be truncated.`);
|
||||
}
|
||||
if (core.isDebug()) {
|
||||
core.startGroup('Print information about available versions');
|
||||
console.timeEnd('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||
core.debug(`Available versions: [${availableVersions.length}]`);
|
||||
core.debug(availableVersions.map(item => item.jdk_version.join('.')).join(', '));
|
||||
core.debug(availableVersions.map(item => item.java_version.join('.')).join(', '));
|
||||
core.endGroup();
|
||||
}
|
||||
return availableVersions;
|
||||
@@ -81217,14 +81272,18 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
||||
const arch = this.distributionArchitecture();
|
||||
switch (arch) {
|
||||
case 'x64':
|
||||
return { arch: 'x86', hw_bitness: '64', abi: '' };
|
||||
return 'x64';
|
||||
case 'x86':
|
||||
return { arch: 'x86', hw_bitness: '32', abi: '' };
|
||||
// The Azul Metadata API's "x86" value returns both 32-bit (i686) and
|
||||
// 64-bit (x64) packages, which are indistinguishable by version and
|
||||
// would let a 32-bit request resolve to a 64-bit JDK. Use "i686" to
|
||||
// target only genuine 32-bit builds, matching the legacy API behavior.
|
||||
return 'i686';
|
||||
case 'aarch64':
|
||||
case 'arm64':
|
||||
return { arch: 'arm', hw_bitness: '64', abi: '' };
|
||||
return 'aarch64';
|
||||
default:
|
||||
return { arch: arch, hw_bitness: '', abi: '' };
|
||||
return arch;
|
||||
}
|
||||
}
|
||||
getPlatformOption() {
|
||||
@@ -81234,6 +81293,10 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
||||
return 'macos';
|
||||
case 'win32':
|
||||
return 'windows';
|
||||
case 'linux':
|
||||
// The new Metadata API's "linux" value returns both glibc and musl packages;
|
||||
// use "linux_glibc" to target only glibc, which is what standard runners use.
|
||||
return 'linux_glibc';
|
||||
default:
|
||||
return process.platform;
|
||||
}
|
||||
@@ -81522,16 +81585,15 @@ function run() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
try {
|
||||
const versions = core.getMultilineInput(constants.INPUT_JAVA_VERSION);
|
||||
const distributionName = core.getInput(constants.INPUT_DISTRIBUTION, {
|
||||
required: true
|
||||
});
|
||||
let distributionName = core.getInput(constants.INPUT_DISTRIBUTION);
|
||||
const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE);
|
||||
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
|
||||
const packageType = core.getInput(constants.INPUT_JAVA_PACKAGE);
|
||||
const jdkFile = core.getInput(constants.INPUT_JDK_FILE);
|
||||
const jdkFile = getJdkFileInput();
|
||||
const cache = core.getInput(constants.INPUT_CACHE);
|
||||
const cacheDependencyPath = core.getInput(constants.INPUT_CACHE_DEPENDENCY_PATH);
|
||||
const checkLatest = (0, util_1.getBooleanInput)(constants.INPUT_CHECK_LATEST, false);
|
||||
const setDefault = (0, util_1.getBooleanInput)(constants.INPUT_SET_DEFAULT, true);
|
||||
const verifySignature = (0, util_1.getBooleanInput)(constants.INPUT_VERIFY_SIGNATURE, false);
|
||||
const verifySignaturePublicKey = core.getInput(constants.INPUT_VERIFY_SIGNATURE_PUBLIC_KEY) || undefined;
|
||||
let toolchainIds = core.getMultilineInput(constants.INPUT_MVN_TOOLCHAIN_ID);
|
||||
@@ -81542,28 +81604,54 @@ function run() {
|
||||
if (!versions.length && !versionFile) {
|
||||
throw new Error('java-version or java-version-file input expected');
|
||||
}
|
||||
const installerInputsOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
distributionName,
|
||||
jdkFile,
|
||||
toolchainIds
|
||||
};
|
||||
if (!versions.length) {
|
||||
core.debug('java-version input is empty, looking for java-version-file input');
|
||||
const content = fs_1.default.readFileSync(versionFile).toString().trim();
|
||||
const version = (0, util_1.getVersionFromFileContent)(content, distributionName, versionFile);
|
||||
core.debug(`Parsed version from file '${version}'`);
|
||||
if (!version) {
|
||||
const versionInfo = (0, util_1.getVersionFromFileContent)(content, distributionName, versionFile);
|
||||
core.debug(`Parsed version from file '${versionInfo === null || versionInfo === void 0 ? void 0 : versionInfo.version}'`);
|
||||
if (!versionInfo) {
|
||||
throw new Error(`No supported version was found in file ${versionFile}`);
|
||||
}
|
||||
yield installVersion(version, installerInputsOptions);
|
||||
// Use distribution from file if available, otherwise use the input
|
||||
if (versionInfo.distribution) {
|
||||
core.info(`Using distribution '${versionInfo.distribution}' from ${versionFile}`);
|
||||
distributionName = versionInfo.distribution;
|
||||
}
|
||||
else if (!distributionName) {
|
||||
throw new Error('distribution input is required when not specified in the version file');
|
||||
}
|
||||
const installerInputsOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
distributionName,
|
||||
jdkFile,
|
||||
toolchainIds
|
||||
};
|
||||
yield installVersion(versionInfo.version, installerInputsOptions);
|
||||
}
|
||||
for (const [index, version] of versions.entries()) {
|
||||
yield installVersion(version, installerInputsOptions, index);
|
||||
else {
|
||||
// When using java-version input, distribution is still required
|
||||
if (!distributionName) {
|
||||
throw new Error('distribution input is required');
|
||||
}
|
||||
const installerInputsOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
distributionName,
|
||||
jdkFile,
|
||||
toolchainIds
|
||||
};
|
||||
for (const [index, version] of versions.entries()) {
|
||||
yield installVersion(version, installerInputsOptions, index);
|
||||
}
|
||||
}
|
||||
core.endGroup();
|
||||
const matchersPath = path.join(__dirname, '..', '..', '.github');
|
||||
@@ -81580,13 +81668,22 @@ function run() {
|
||||
});
|
||||
}
|
||||
run();
|
||||
function getJdkFileInput() {
|
||||
const jdkFile = core.getInput(constants.INPUT_JDK_FILE);
|
||||
const deprecatedJdkFile = core.getInput(constants.INPUT_JDK_FILE_DEPRECATED);
|
||||
if (deprecatedJdkFile) {
|
||||
core.warning(`The '${constants.INPUT_JDK_FILE_DEPRECATED}' input is deprecated and may be removed in a future release. Please use '${constants.INPUT_JDK_FILE}' instead.`);
|
||||
}
|
||||
return jdkFile || deprecatedJdkFile;
|
||||
}
|
||||
function installVersion(version, options, toolchainId = 0) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const { distributionName, jdkFile, architecture, packageType, checkLatest, verifySignature, verifySignaturePublicKey, toolchainIds } = options;
|
||||
const { distributionName, jdkFile, architecture, packageType, checkLatest, setDefault, verifySignature, verifySignaturePublicKey, toolchainIds } = options;
|
||||
const installerOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
version
|
||||
@@ -81944,25 +82041,45 @@ function isCacheFeatureAvailable() {
|
||||
}
|
||||
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
||||
function getVersionFromFileContent(content, distributionName, versionFile) {
|
||||
var _a, _b, _c, _d, _e;
|
||||
var _a, _b, _c, _d;
|
||||
let javaVersionRegExp;
|
||||
let extractedDistribution;
|
||||
function getFileName(versionFile) {
|
||||
return path_1.default.basename(versionFile);
|
||||
}
|
||||
const versionFileName = getFileName(versionFile);
|
||||
if (versionFileName == '.tool-versions') {
|
||||
// Capture an optional asdf-java vendor prefix (e.g. `temurin-`, `corretto-`)
|
||||
// in the `distribution` group so it can be mapped to a setup-java distribution.
|
||||
javaVersionRegExp =
|
||||
/^java\s+(?:\S*-)?(?<version>\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im;
|
||||
/^java\s+(?:(?<distribution>\S*)-)?(?<version>\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im;
|
||||
}
|
||||
else if (versionFileName == '.sdkmanrc') {
|
||||
javaVersionRegExp = /^java\s*=\s*(?<version>[^-]+)/m;
|
||||
// Match both version and optional distribution identifier
|
||||
javaVersionRegExp =
|
||||
/^java\s*=\s*(?<version>[^-\s]+)(?:-(?<distribution>[a-z0-9]+))?/m;
|
||||
}
|
||||
else {
|
||||
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
||||
}
|
||||
const capturedVersion = ((_b = (_a = content.match(javaVersionRegExp)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.version)
|
||||
? (_d = (_c = content.match(javaVersionRegExp)) === null || _c === void 0 ? void 0 : _c.groups) === null || _d === void 0 ? void 0 : _d.version
|
||||
const match = content.match(javaVersionRegExp);
|
||||
const capturedVersion = ((_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.version)
|
||||
? match.groups.version
|
||||
: '';
|
||||
// Extract distribution from .sdkmanrc file
|
||||
if (versionFileName == '.sdkmanrc' && ((_b = match === null || match === void 0 ? void 0 : match.groups) === null || _b === void 0 ? void 0 : _b.distribution)) {
|
||||
const sdkmanDist = match.groups.distribution;
|
||||
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
||||
core.debug(`Parsed distribution '${extractedDistribution}' from SDKMAN identifier '${sdkmanDist}'`);
|
||||
}
|
||||
// Extract distribution from asdf .tool-versions file
|
||||
if (versionFileName == '.tool-versions' && ((_c = match === null || match === void 0 ? void 0 : match.groups) === null || _c === void 0 ? void 0 : _c.distribution)) {
|
||||
const asdfDist = match.groups.distribution;
|
||||
extractedDistribution = mapAsdfDistribution(asdfDist);
|
||||
if (extractedDistribution) {
|
||||
core.debug(`Parsed distribution '${extractedDistribution}' from asdf identifier '${asdfDist}'`);
|
||||
}
|
||||
}
|
||||
core.debug(`Parsed version '${capturedVersion}' from file '${versionFileName}'`);
|
||||
if (!capturedVersion) {
|
||||
return null;
|
||||
@@ -81976,13 +82093,79 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
||||
if (!version) {
|
||||
return null;
|
||||
}
|
||||
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(distributionName)) {
|
||||
const coerceVersion = (_e = semver.coerce(version)) !== null && _e !== void 0 ? _e : version;
|
||||
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
||||
// (either explicitly provided or extracted from the version file) is in the list.
|
||||
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) {
|
||||
const coerceVersion = (_d = semver.coerce(version)) !== null && _d !== void 0 ? _d : version;
|
||||
version = semver.major(coerceVersion).toString();
|
||||
}
|
||||
return version.toString();
|
||||
return {
|
||||
version: version.toString(),
|
||||
distribution: extractedDistribution
|
||||
};
|
||||
}
|
||||
exports.getVersionFromFileContent = getVersionFromFileContent;
|
||||
// Map SDKMAN distribution identifiers to setup-java distribution names
|
||||
function mapSdkmanDistribution(sdkmanDist) {
|
||||
const distributionMap = {
|
||||
tem: 'temurin',
|
||||
sem: 'semeru',
|
||||
albba: 'dragonwell',
|
||||
zulu: 'zulu',
|
||||
amzn: 'corretto',
|
||||
graal: 'graalvm',
|
||||
graalce: 'graalvm',
|
||||
librca: 'liberica',
|
||||
ms: 'microsoft',
|
||||
oracle: 'oracle',
|
||||
sapmchn: 'sapmachine',
|
||||
jbr: 'jetbrains',
|
||||
dragonwell: 'dragonwell',
|
||||
kona: 'kona'
|
||||
};
|
||||
const mapped = distributionMap[sdkmanDist.toLowerCase()];
|
||||
if (!mapped) {
|
||||
core.warning(`Unknown SDKMAN distribution identifier '${sdkmanDist}'. Please specify the distribution explicitly.`);
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
// Map asdf-java (.tool-versions) vendor identifiers to setup-java distribution names.
|
||||
// asdf-java encodes the vendor as a prefix on the version string, e.g.
|
||||
// `java temurin-17.0.3+7` or `java semeru-openj9-11.0.25+9`. Packaging variants
|
||||
// (`-jre`, `-musl`, `-openj9`, `-crac`, `-javafx`, ...) are collapsed onto the
|
||||
// base vendor since setup-java does not distinguish them here.
|
||||
function mapAsdfDistribution(asdfDist) {
|
||||
const normalized = asdfDist.toLowerCase();
|
||||
// Multi-segment vendors that map to a distinct setup-java distribution.
|
||||
if (normalized.startsWith('graalvm-community')) {
|
||||
return 'graalvm-community';
|
||||
}
|
||||
if (normalized.startsWith('oracle-graalvm')) {
|
||||
return 'graalvm';
|
||||
}
|
||||
const baseVendor = normalized.split('-')[0];
|
||||
const distributionMap = {
|
||||
temurin: 'temurin',
|
||||
adoptopenjdk: 'temurin',
|
||||
zulu: 'zulu',
|
||||
corretto: 'corretto',
|
||||
liberica: 'liberica',
|
||||
microsoft: 'microsoft',
|
||||
semeru: 'semeru',
|
||||
ibm: 'semeru',
|
||||
dragonwell: 'dragonwell',
|
||||
graalvm: 'graalvm',
|
||||
oracle: 'oracle',
|
||||
sapmachine: 'sapmachine',
|
||||
kona: 'kona',
|
||||
jetbrains: 'jetbrains'
|
||||
};
|
||||
const mapped = distributionMap[baseVendor];
|
||||
if (!mapped) {
|
||||
core.warning(`Unknown asdf distribution identifier '${asdfDist}'. Please specify the distribution explicitly.`);
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
|
||||
function avoidOldNotation(content) {
|
||||
return content.startsWith('1.') ? content.substring(2) : content;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
- [Installing custom Java package type](#Installing-custom-Java-package-type)
|
||||
- [JavaFX Maven project](#JavaFX-Maven-project)
|
||||
- [Installing custom Java architecture](#Installing-custom-Java-architecture)
|
||||
- [Installing JDK without setting as default](#Installing-JDK-without-setting-as-default)
|
||||
- [Installing custom Java distribution from local file](#Installing-Java-from-local-file)
|
||||
- [Testing against different Java distributions](#Testing-against-different-Java-distributions)
|
||||
- [Testing against different platforms](#Testing-against-different-platforms)
|
||||
@@ -40,7 +41,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
@@ -65,8 +66,8 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '21'
|
||||
java-package: jdk # optional (jdk, jre, jdk+fx or jre+fx) - defaults to jdk
|
||||
java-version: '25'
|
||||
java-package: jdk # optional (jdk, jre, jdk+fx, jre+fx, jdk+crac, or jre+crac) - defaults to jdk
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
@@ -78,7 +79,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'liberica'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
java-package: jdk # optional (jdk, jre, jdk+fx or jre+fx) - defaults to jdk
|
||||
- run: java --version
|
||||
```
|
||||
@@ -91,7 +92,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'microsoft'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
@@ -106,7 +107,7 @@ uses: actions/setup-java@v5
|
||||
with:
|
||||
token: ${{ secrets.GH_DOTCOM_TOKEN }}
|
||||
distribution: 'microsoft'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
```
|
||||
|
||||
If the runner is not able to access github.com, any Java versions requested during a workflow run must come from the runner's tool cache. See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server@3.2/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" for more information.
|
||||
@@ -120,7 +121,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'corretto'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
@@ -133,7 +134,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'oracle'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
@@ -158,7 +159,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'sapmachine'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
@@ -171,7 +172,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'graalvm'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
- run: |
|
||||
java --version
|
||||
native-image --version
|
||||
@@ -255,7 +256,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: '<distribution>'
|
||||
java-version: '11'
|
||||
java-version: '25'
|
||||
java-package: jdk # optional (jdk or jre) - defaults to jdk
|
||||
- run: java --version
|
||||
```
|
||||
@@ -270,7 +271,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
java-package: jdk+fx
|
||||
cache: maven
|
||||
- name: Build with Maven
|
||||
@@ -292,16 +293,44 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: '<distribution>'
|
||||
java-version: '11'
|
||||
java-version: '25'
|
||||
architecture: x86 # optional - default value derived from the runner machine
|
||||
- run: java --version
|
||||
```
|
||||
|
||||
## Installing JDK without setting as default
|
||||
|
||||
When installing multiple JDKs, the last one installed becomes the default (`JAVA_HOME`, `PATH`). Use the `set-default` option to install a JDK without overriding the default. The installed JDK is still discoverable via the `JAVA_HOME_<major>_<arch>` environment variable (e.g. `JAVA_HOME_21_X64`).
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
- uses: actions/setup-java@v5
|
||||
id: setup-java-21
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '21'
|
||||
set-default: false
|
||||
- run: |
|
||||
echo "Default java:"
|
||||
java -version
|
||||
echo "Java 21 home: $JAVA_HOME_21_X64"
|
||||
echo "Java 21 path from output: ${{ steps.setup-java-21.outputs.path }}"
|
||||
```
|
||||
|
||||
In this example, `JAVA_HOME` and `java` on `PATH` point to Java 17, while Java 21 is available via `JAVA_HOME_21_X64` or the step output `path`.
|
||||
|
||||
> **Note:** When a single step installs multiple JDKs via a multiline `java-version`, the `set-default` value applies to all of them. With `set-default: false`, none of those JDKs become the default; each remains discoverable through its `JAVA_HOME_<major>_<arch>` variable. Regardless of `set-default`, installed JDKs are still registered in the Maven toolchains file, so they can be selected via Maven toolchains.
|
||||
|
||||
## Installing Java from local file
|
||||
If your use-case requires a custom distribution or a version that is not provided by setup-java, you can download it manually and setup-java will take care of the installation and caching on the VM:
|
||||
|
||||
> [!NOTE]
|
||||
> This approach also lets you use builds that setup-java does not provide directly, such as **Early Access (EA)** or other unreleased JDK builds (for example, an upcoming feature release or a Loom/Valhalla preview build). Download the desired archive in a prior step and point `jdkFile` at it; setup-java will extract, install, and cache it just like a supported distribution. When targeting multiple architectures, select the correct binary per architecture in your workflow (for example, with a build matrix).
|
||||
> This approach also lets you use builds that setup-java does not provide directly, such as **Early Access (EA)** or other unreleased JDK builds (for example, an upcoming feature release or a Loom/Valhalla preview build). Download the desired archive in a prior step and point `jdk-file` at it; setup-java will extract, install, and cache it just like a supported distribution. When targeting multiple architectures, select the correct binary per architecture in your workflow (for example, with a build matrix).
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
@@ -311,7 +340,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
||||
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||
java-version: '11.0.0'
|
||||
architecture: x64
|
||||
|
||||
@@ -328,7 +357,7 @@ steps:
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
||||
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||
java-version: '25.0.0-ea.36'
|
||||
architecture: x64
|
||||
|
||||
@@ -354,7 +383,7 @@ If your use-case requires a custom distribution (in the example, alpine-linux is
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
||||
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||
java-version: {{ steps.fetch_latest_jdk.outputs.java_version }}
|
||||
architecture: x64
|
||||
- run: java --version
|
||||
@@ -487,6 +516,8 @@ The two `settings.xml` files created from the above example look like the follow
|
||||
|
||||
***NOTE***: The `settings.xml` file is created in the Actions `$HOME/.m2` directory. If you have an existing `settings.xml` file at that location, it will be overwritten. See [below](#apache-maven-with-a-settings-path) for using the `settings-path` to change your `settings.xml` file location.
|
||||
|
||||
***NOTE***: The generated `settings.xml` sets `<interactiveMode>false</interactiveMode>` so that Maven never blocks a CI run waiting on an interactive prompt. This is applied automatically whenever the action generates `settings.xml`.
|
||||
|
||||
If you don't want to overwrite the `settings.xml` file, you can set `overwrite-settings: false`
|
||||
|
||||
### Extra setup for pom.xml:
|
||||
@@ -572,6 +603,44 @@ jobs:
|
||||
- This setting only affects Maven. It has no effect on Gradle, sbt, or other build tools.
|
||||
- `-ntp` only controls transfer/progress output; it does not change whether Maven runs in batch mode. Use `-B`/`--batch-mode` (or `<interactiveMode>false</interactiveMode>` in `settings.xml`) if you also want non-interactive runs.
|
||||
|
||||
## Java problem matcher (compiler annotations)
|
||||
|
||||
`setup-java` registers a [problem matcher](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) for Java after installing the JDK. It scans the log output of subsequent steps and turns `javac` diagnostics into GitHub [annotations](https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-a-warning-message) that appear in the run summary and inline on the affected files. It matches two kinds of lines:
|
||||
|
||||
- Compiler errors and warnings, e.g. `App.java:12: error: cannot find symbol` (owner `javac`).
|
||||
- Uncaught-exception header lines, e.g. `Exception in thread "main" ...`; because these lines have no file or line captures, they appear as log/run-level annotations rather than inline file annotations (owner `java`).
|
||||
|
||||
This is enabled by default and requires no configuration.
|
||||
|
||||
### Disabling the problem matcher
|
||||
|
||||
There is no action input to turn the matcher off, but you can disable it for the rest of the job with the built-in [`remove-matcher`](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md#remove-a-problem-matcher) workflow command. Pass the matcher **owner** (not a file name); the Java matcher defines two owners, `javac` and `java`, so remove both to fully suppress it:
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: '<distribution>'
|
||||
java-version: '21'
|
||||
|
||||
- name: Disable the Java problem matcher
|
||||
run: |
|
||||
echo "::remove-matcher owner=javac::"
|
||||
echo "::remove-matcher owner=java::"
|
||||
|
||||
- name: Build with Maven
|
||||
run: mvn -B package --file pom.xml
|
||||
```
|
||||
|
||||
***NOTES***:
|
||||
- `remove-matcher` only stops annotations from being created; the underlying compiler output is unchanged, so a failing `javac`/build still fails the step.
|
||||
- The command is scoped to the job, so add the step right after `setup-java` (and before your build) in every job where you want the matcher disabled.
|
||||
|
||||
## Publishing using Gradle
|
||||
```yaml
|
||||
jobs:
|
||||
@@ -639,7 +708,7 @@ The result is a Toolchain with entries for JDKs 8, 11 and 15. You can even combi
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
||||
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||
java-version: '1.6'
|
||||
architecture: x64
|
||||
```
|
||||
@@ -656,7 +725,7 @@ Each JDK provider will receive a default `vendor` using the `distribution` input
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'jdkfile'
|
||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
||||
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||
java-version: '1.6'
|
||||
architecture: x64
|
||||
mvn-toolchain-vendor: 'Oracle'
|
||||
@@ -711,19 +780,55 @@ steps:
|
||||
|
||||
Supported files are `.java-version`, `.tool-versions` and `.sdkmanrc`.
|
||||
* In `.java-version` file, only the version should be specified (e.g., 17.0.7). The `.java-version` file recognizes all variants of the version description according to [jenv](https://github.com/jenv/jenv).
|
||||
* In `.tool-versions` file, java version should be preceded by the java keyword (e.g., java 17.0.7). The `.tool-versions` file supports version specifications in accordance with [asdf](https://github.com/asdf-vm/asdf) standards, adhering to Semantic Versioning ([semver](https://semver.org/)).
|
||||
* In `.sdkmanrc` file, java version should be preceded by the `java=` prefix (e.g., java=17.0.7-tem) and include the distribution. The `.sdkmanrc` file supports version specifications in accordance with [file format](https://sdkman.io/usage#env-command), see [Sdkman! documentation](https://sdkman.io/jdks) for more information.
|
||||
* In `.tool-versions` file, java version should be preceded by the java keyword (e.g., java 17.0.7). The `.tool-versions` file supports version specifications in accordance with [asdf](https://github.com/asdf-vm/asdf) standards, adhering to Semantic Versioning ([semver](https://semver.org/)). When the entry includes an [asdf-java](https://github.com/halcyon/asdf-java) vendor prefix (e.g. `java temurin-17.0.3+7`), setup-java can infer the `distribution` input automatically. Unrecognized vendor prefixes require setting `distribution` explicitly.
|
||||
|
||||
Supported asdf-java vendor prefix mappings (packaging variants such as `-jre`, `-musl`, `-openj9`, `-crac`, `-javafx` are collapsed onto the base vendor):
|
||||
|
||||
| asdf-java vendor prefix | setup-java distribution |
|
||||
| ----------------------- | ----------------------- |
|
||||
| `temurin` | `temurin` |
|
||||
| `adoptopenjdk` | `temurin` |
|
||||
| `zulu` | `zulu` |
|
||||
| `corretto` | `corretto` |
|
||||
| `liberica` | `liberica` |
|
||||
| `microsoft` | `microsoft` |
|
||||
| `semeru`, `ibm` | `semeru` |
|
||||
| `dragonwell` | `dragonwell` |
|
||||
| `graalvm`, `oracle-graalvm` | `graalvm` |
|
||||
| `graalvm-community` | `graalvm-community` |
|
||||
| `oracle` | `oracle` |
|
||||
| `sapmachine` | `sapmachine` |
|
||||
| `kona` | `kona` |
|
||||
| `jetbrains` | `jetbrains` |
|
||||
|
||||
* In `.sdkmanrc` file, java version should be preceded by the `java=` prefix (e.g., `java=17.0.7-tem`). When a recognized SDKMAN distribution suffix is present, setup-java can infer the `distribution` input automatically. Unrecognized suffixes require setting `distribution` explicitly. The `.sdkmanrc` file supports version specifications in accordance with [file format](https://sdkman.io/usage#env-command), see [Sdkman! documentation](https://sdkman.io/jdks) for more information.
|
||||
|
||||
Supported SDKMAN suffix mappings:
|
||||
|
||||
| SDKMAN suffix | setup-java distribution |
|
||||
| ------------- | ----------------------- |
|
||||
| `tem` | `temurin` |
|
||||
| `sem` | `semeru` |
|
||||
| `albba`, `dragonwell` | `dragonwell` |
|
||||
| `zulu` | `zulu` |
|
||||
| `amzn` | `corretto` |
|
||||
| `graal`, `graalce` | `graalvm` |
|
||||
| `librca` | `liberica` |
|
||||
| `ms` | `microsoft` |
|
||||
| `oracle` | `oracle` |
|
||||
| `sapmchn` | `sapmachine` |
|
||||
| `jbr` | `jetbrains` |
|
||||
| `kona` | `kona` |
|
||||
|
||||
|
||||
If both `java-version` and `java-version-file` **inputs** are provided, the `java-version` input will be used.
|
||||
|
||||
**Example step using `Sdkman!`**:
|
||||
**Example step using `Sdkman!`** (distribution inferred from `.sdkmanrc`):
|
||||
```yml
|
||||
- name: Setup java
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
java-version-file: '.sdkmanrc'
|
||||
distribution: 'temurin'
|
||||
```
|
||||
|
||||
**Example `.sdkmanrc`**:
|
||||
@@ -731,6 +836,19 @@ steps:
|
||||
java=17.0.7-tem
|
||||
```
|
||||
|
||||
**Example step using `asdf`** (distribution inferred from `.tool-versions`):
|
||||
```yml
|
||||
- name: Setup java
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
java-version-file: '.tool-versions'
|
||||
```
|
||||
|
||||
**Example `.tool-versions`**:
|
||||
```
|
||||
java temurin-17.0.7+7
|
||||
```
|
||||
|
||||
Valid entry options (does not apply to `.sdkmanrc`):
|
||||
```
|
||||
major versions: 8, 11, 16, 17, 21
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "setup-java",
|
||||
"version": "5.3.0",
|
||||
"version": "5.6.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "setup-java",
|
||||
"version": "5.3.0",
|
||||
"version": "5.6.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/cache": "^5.1.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "setup-java",
|
||||
"version": "5.3.0",
|
||||
"version": "5.6.0",
|
||||
"private": true,
|
||||
"description": "setup java action",
|
||||
"main": "dist/setup/index.js",
|
||||
|
||||
@@ -28,7 +28,11 @@ const supportedPackageManager: PackageManager[] = [
|
||||
join(os.homedir(), '.m2', 'wrapper', 'dists')
|
||||
],
|
||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---maven
|
||||
pattern: ['**/pom.xml', '**/.mvn/wrapper/maven-wrapper.properties']
|
||||
pattern: [
|
||||
'**/pom.xml',
|
||||
'**/.mvn/wrapper/maven-wrapper.properties',
|
||||
'**/.mvn/extensions.xml'
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 'gradle',
|
||||
@@ -114,6 +118,7 @@ export async function restore(id: string, cacheDependencyPath: string) {
|
||||
const primaryKey = await computeCacheKey(packageManager, cacheDependencyPath);
|
||||
core.debug(`primary key is ${primaryKey}`);
|
||||
core.saveState(STATE_CACHE_PRIMARY_KEY, primaryKey);
|
||||
core.setOutput(STATE_CACHE_PRIMARY_KEY, primaryKey);
|
||||
|
||||
// No "restoreKeys" is set, to start with a clear cache after dependency update (see https://github.com/actions/setup-java/issues/269)
|
||||
const matchedKey = await cache.restoreCache(packageManager.path, primaryKey);
|
||||
|
||||
@@ -4,8 +4,10 @@ export const INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
||||
export const INPUT_ARCHITECTURE = 'architecture';
|
||||
export const INPUT_JAVA_PACKAGE = 'java-package';
|
||||
export const INPUT_DISTRIBUTION = 'distribution';
|
||||
export const INPUT_JDK_FILE = 'jdkFile';
|
||||
export const INPUT_JDK_FILE = 'jdk-file';
|
||||
export const INPUT_JDK_FILE_DEPRECATED = 'jdkFile';
|
||||
export const INPUT_CHECK_LATEST = 'check-latest';
|
||||
export const INPUT_SET_DEFAULT = 'set-default';
|
||||
export const INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
||||
export const INPUT_VERIFY_SIGNATURE_PUBLIC_KEY = 'verify-signature-public-key';
|
||||
export const INPUT_SERVER_ID = 'server-id';
|
||||
|
||||
@@ -20,6 +20,7 @@ export abstract class JavaBase {
|
||||
protected packageType: string;
|
||||
protected stable: boolean;
|
||||
protected checkLatest: boolean;
|
||||
protected setDefault: boolean;
|
||||
protected verifySignature: boolean;
|
||||
protected verifySignaturePublicKey: string | undefined;
|
||||
|
||||
@@ -38,6 +39,10 @@ export abstract class JavaBase {
|
||||
this.architecture = installerOptions.architecture || os.arch();
|
||||
this.packageType = installerOptions.packageType;
|
||||
this.checkLatest = installerOptions.checkLatest;
|
||||
this.setDefault =
|
||||
installerOptions.setDefault !== undefined
|
||||
? installerOptions.setDefault
|
||||
: true;
|
||||
this.verifySignature = installerOptions.verifySignature ?? false;
|
||||
this.verifySignaturePublicKey = installerOptions.verifySignaturePublicKey;
|
||||
}
|
||||
@@ -179,8 +184,15 @@ export abstract class JavaBase {
|
||||
foundJava.path = macOSPostfixPath;
|
||||
}
|
||||
|
||||
core.info(`Setting Java ${foundJava.version} as the default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
if (this.setDefault) {
|
||||
core.info(`Setting Java ${foundJava.version} as the default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
} else {
|
||||
core.info(
|
||||
`Installing Java ${foundJava.version} (not setting as default)`
|
||||
);
|
||||
this.setJavaEnvironment(foundJava.version, foundJava.path);
|
||||
}
|
||||
|
||||
return foundJava;
|
||||
}
|
||||
@@ -312,9 +324,13 @@ export abstract class JavaBase {
|
||||
}
|
||||
|
||||
protected setJavaDefault(version: string, toolPath: string) {
|
||||
const majorVersion = version.split('.')[0];
|
||||
core.exportVariable('JAVA_HOME', toolPath);
|
||||
core.addPath(path.join(toolPath, 'bin'));
|
||||
this.setJavaEnvironment(version, toolPath);
|
||||
}
|
||||
|
||||
protected setJavaEnvironment(version: string, toolPath: string) {
|
||||
const majorVersion = version.split('.')[0];
|
||||
core.setOutput('distribution', this.distribution);
|
||||
core.setOutput('path', toolPath);
|
||||
core.setOutput('version', version);
|
||||
|
||||
@@ -3,6 +3,7 @@ export interface JavaInstallerOptions {
|
||||
architecture: string;
|
||||
packageType: string;
|
||||
checkLatest: boolean;
|
||||
setDefault?: boolean;
|
||||
verifySignature?: boolean;
|
||||
verifySignaturePublicKey?: string;
|
||||
}
|
||||
|
||||
@@ -69,9 +69,15 @@ export class LocalDistribution extends JavaBase {
|
||||
foundJava.path = macOSPostfixPath;
|
||||
}
|
||||
|
||||
core.info(`Setting Java ${foundJava.version} as default`);
|
||||
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
if (this.setDefault) {
|
||||
core.info(`Setting Java ${foundJava.version} as the default`);
|
||||
this.setJavaDefault(foundJava.version, foundJava.path);
|
||||
} else {
|
||||
core.info(
|
||||
`Installing Java ${foundJava.version} (not setting as default)`
|
||||
);
|
||||
this.setJavaEnvironment(foundJava.version, foundJava.path);
|
||||
}
|
||||
return foundJava;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,17 +30,24 @@ export class ZuluDistribution extends JavaBase {
|
||||
): Promise<JavaDownloadRelease> {
|
||||
const availableVersionsRaw = await this.getAvailableVersions();
|
||||
const availableVersions = availableVersionsRaw.map(item => {
|
||||
// The Azul Metadata API reports the JDK build number separately from
|
||||
// java_version (e.g. java_version=[17,0,7], openjdk_build_number=7).
|
||||
// Append it so the resulting semver retains the build (e.g. 17.0.7+7).
|
||||
const javaVersion =
|
||||
item.openjdk_build_number != null
|
||||
? [...item.java_version, item.openjdk_build_number]
|
||||
: item.java_version;
|
||||
return {
|
||||
version: convertVersionToSemver(item.jdk_version),
|
||||
url: item.url,
|
||||
zuluVersion: convertVersionToSemver(item.zulu_version)
|
||||
version: convertVersionToSemver(javaVersion),
|
||||
url: item.download_url,
|
||||
zuluVersion: convertVersionToSemver(item.distro_version)
|
||||
};
|
||||
});
|
||||
|
||||
const satisfiedVersions = availableVersions
|
||||
.filter(item => isVersionSatisfies(version, item.version))
|
||||
.sort((a, b) => {
|
||||
// Azul provides two versions: jdk_version and azul_version
|
||||
// Azul provides two versions: java_version and distro_version
|
||||
// we should sort by both fields by descending
|
||||
return (
|
||||
-semver.compareBuild(a.version, b.version) ||
|
||||
@@ -95,45 +102,76 @@ export class ZuluDistribution extends JavaBase {
|
||||
}
|
||||
|
||||
private async getAvailableVersions(): Promise<IZuluVersions[]> {
|
||||
const {arch, hw_bitness, abi} = this.getArchitectureOptions();
|
||||
const arch = this.getArchitectureOptions();
|
||||
const [bundleType, features] = this.packageType.split('+');
|
||||
const platform = this.getPlatformOption();
|
||||
const extension = getDownloadArchiveExtension();
|
||||
const javafx = features?.includes('fx') ?? false;
|
||||
const crac = features?.includes('crac') ?? false;
|
||||
const releaseStatus = this.stable ? 'ga' : 'ea';
|
||||
|
||||
if (core.isDebug()) {
|
||||
console.time('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||
}
|
||||
|
||||
const requestArguments = [
|
||||
const baseRequestArguments = [
|
||||
`os=${platform}`,
|
||||
`ext=${extension}`,
|
||||
`bundle_type=${bundleType}`,
|
||||
`javafx=${javafx}`,
|
||||
`archive_type=${extension}`,
|
||||
`java_package_type=${bundleType}`,
|
||||
`javafx_bundled=${javafx}`,
|
||||
`crac_supported=${crac}`,
|
||||
`arch=${arch}`,
|
||||
`hw_bitness=${hw_bitness}`,
|
||||
`release_status=${releaseStatus}`,
|
||||
abi ? `abi=${abi}` : null,
|
||||
features ? `features=${features}` : null
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join('&');
|
||||
`availability_types=ca`
|
||||
].join('&');
|
||||
|
||||
const availableVersionsUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?${requestArguments}`;
|
||||
// Need to iterate through all pages to retrieve the list of all versions.
|
||||
// The Azul API doesn't return a total page count, so paginate until a page
|
||||
// comes back empty (or short), guarding against a runaway loop with a cap.
|
||||
const pageSize = 100;
|
||||
const maxPages = 100;
|
||||
let pageIndex = 1;
|
||||
const availableVersions: IZuluVersions[] = [];
|
||||
while (pageIndex <= maxPages) {
|
||||
const requestArguments = `${baseRequestArguments}&page=${pageIndex}&page_size=${pageSize}`;
|
||||
const availableVersionsUrl = `https://api.azul.com/metadata/v1/zulu/packages/?${requestArguments}`;
|
||||
if (core.isDebug() && pageIndex === 1) {
|
||||
// the url is identical except for the page number, so print it once for debug
|
||||
core.debug(
|
||||
`Gathering available versions from '${availableVersionsUrl}'`
|
||||
);
|
||||
}
|
||||
|
||||
core.debug(`Gathering available versions from '${availableVersionsUrl}'`);
|
||||
const paginationPage = (
|
||||
await this.http.getJson<IZuluVersions[]>(availableVersionsUrl)
|
||||
).result;
|
||||
if (!paginationPage || paginationPage.length === 0) {
|
||||
// stop paginating because we have reached the end of the results
|
||||
break;
|
||||
}
|
||||
|
||||
const availableVersions =
|
||||
(await this.http.getJson<Array<IZuluVersions>>(availableVersionsUrl))
|
||||
.result ?? [];
|
||||
availableVersions.push(...paginationPage);
|
||||
|
||||
if (paginationPage.length < pageSize) {
|
||||
// a short page means this was the last one; avoid an extra empty request
|
||||
break;
|
||||
}
|
||||
|
||||
pageIndex++;
|
||||
}
|
||||
|
||||
if (pageIndex > maxPages) {
|
||||
core.warning(
|
||||
`Reached the maximum of ${maxPages} pages while listing Zulu versions; results may be truncated.`
|
||||
);
|
||||
}
|
||||
|
||||
if (core.isDebug()) {
|
||||
core.startGroup('Print information about available versions');
|
||||
console.timeEnd('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||
core.debug(`Available versions: [${availableVersions.length}]`);
|
||||
core.debug(
|
||||
availableVersions.map(item => item.jdk_version.join('.')).join(', ')
|
||||
availableVersions.map(item => item.java_version.join('.')).join(', ')
|
||||
);
|
||||
core.endGroup();
|
||||
}
|
||||
@@ -141,22 +179,22 @@ export class ZuluDistribution extends JavaBase {
|
||||
return availableVersions;
|
||||
}
|
||||
|
||||
private getArchitectureOptions(): {
|
||||
arch: string;
|
||||
hw_bitness: string;
|
||||
abi: string;
|
||||
} {
|
||||
private getArchitectureOptions(): string {
|
||||
const arch = this.distributionArchitecture();
|
||||
switch (arch) {
|
||||
case 'x64':
|
||||
return {arch: 'x86', hw_bitness: '64', abi: ''};
|
||||
return 'x64';
|
||||
case 'x86':
|
||||
return {arch: 'x86', hw_bitness: '32', abi: ''};
|
||||
// The Azul Metadata API's "x86" value returns both 32-bit (i686) and
|
||||
// 64-bit (x64) packages, which are indistinguishable by version and
|
||||
// would let a 32-bit request resolve to a 64-bit JDK. Use "i686" to
|
||||
// target only genuine 32-bit builds, matching the legacy API behavior.
|
||||
return 'i686';
|
||||
case 'aarch64':
|
||||
case 'arm64':
|
||||
return {arch: 'arm', hw_bitness: '64', abi: ''};
|
||||
return 'aarch64';
|
||||
default:
|
||||
return {arch: arch, hw_bitness: '', abi: ''};
|
||||
return arch;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,6 +205,10 @@ export class ZuluDistribution extends JavaBase {
|
||||
return 'macos';
|
||||
case 'win32':
|
||||
return 'windows';
|
||||
case 'linux':
|
||||
// The new Metadata API's "linux" value returns both glibc and musl packages;
|
||||
// use "linux_glibc" to target only glibc, which is what standard runners use.
|
||||
return 'linux_glibc';
|
||||
default:
|
||||
return process.platform;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
// Models from https://app.swaggerhub.com/apis-docs/azul/zulu-download-community/1.0
|
||||
// Models from https://app.swaggerhub.com/apis/azul/metadata/1.0
|
||||
|
||||
export interface IZuluVersions {
|
||||
id: number;
|
||||
package_uuid: string;
|
||||
name: string;
|
||||
url: string;
|
||||
jdk_version: Array<number>;
|
||||
zulu_version: Array<number>;
|
||||
download_url: string;
|
||||
java_version: Array<number>;
|
||||
distro_version: Array<number>;
|
||||
openjdk_build_number: number;
|
||||
latest: boolean;
|
||||
availability_type: string;
|
||||
}
|
||||
|
||||
@@ -17,18 +17,17 @@ import {configureMavenArgs} from './maven-args';
|
||||
async function run() {
|
||||
try {
|
||||
const versions = core.getMultilineInput(constants.INPUT_JAVA_VERSION);
|
||||
const distributionName = core.getInput(constants.INPUT_DISTRIBUTION, {
|
||||
required: true
|
||||
});
|
||||
let distributionName = core.getInput(constants.INPUT_DISTRIBUTION);
|
||||
const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE);
|
||||
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
|
||||
const packageType = core.getInput(constants.INPUT_JAVA_PACKAGE);
|
||||
const jdkFile = core.getInput(constants.INPUT_JDK_FILE);
|
||||
const jdkFile = getJdkFileInput();
|
||||
const cache = core.getInput(constants.INPUT_CACHE);
|
||||
const cacheDependencyPath = core.getInput(
|
||||
constants.INPUT_CACHE_DEPENDENCY_PATH
|
||||
);
|
||||
const checkLatest = getBooleanInput(constants.INPUT_CHECK_LATEST, false);
|
||||
const setDefault = getBooleanInput(constants.INPUT_SET_DEFAULT, true);
|
||||
const verifySignature = getBooleanInput(
|
||||
constants.INPUT_VERIFY_SIGNATURE,
|
||||
false
|
||||
@@ -47,41 +46,71 @@ async function run() {
|
||||
throw new Error('java-version or java-version-file input expected');
|
||||
}
|
||||
|
||||
const installerInputsOptions: installerInputsOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
distributionName,
|
||||
jdkFile,
|
||||
toolchainIds
|
||||
};
|
||||
|
||||
if (!versions.length) {
|
||||
core.debug(
|
||||
'java-version input is empty, looking for java-version-file input'
|
||||
);
|
||||
const content = fs.readFileSync(versionFile).toString().trim();
|
||||
|
||||
const version = getVersionFromFileContent(
|
||||
const versionInfo = getVersionFromFileContent(
|
||||
content,
|
||||
distributionName,
|
||||
versionFile
|
||||
);
|
||||
core.debug(`Parsed version from file '${version}'`);
|
||||
core.debug(`Parsed version from file '${versionInfo?.version}'`);
|
||||
|
||||
if (!version) {
|
||||
if (!versionInfo) {
|
||||
throw new Error(
|
||||
`No supported version was found in file ${versionFile}`
|
||||
);
|
||||
}
|
||||
|
||||
await installVersion(version, installerInputsOptions);
|
||||
}
|
||||
// Use distribution from file if available, otherwise use the input
|
||||
if (versionInfo.distribution) {
|
||||
core.info(
|
||||
`Using distribution '${versionInfo.distribution}' from ${versionFile}`
|
||||
);
|
||||
distributionName = versionInfo.distribution;
|
||||
} else if (!distributionName) {
|
||||
throw new Error(
|
||||
'distribution input is required when not specified in the version file'
|
||||
);
|
||||
}
|
||||
|
||||
for (const [index, version] of versions.entries()) {
|
||||
await installVersion(version, installerInputsOptions, index);
|
||||
const installerInputsOptions: installerInputsOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
distributionName,
|
||||
jdkFile,
|
||||
toolchainIds
|
||||
};
|
||||
|
||||
await installVersion(versionInfo.version, installerInputsOptions);
|
||||
} else {
|
||||
// When using java-version input, distribution is still required
|
||||
if (!distributionName) {
|
||||
throw new Error('distribution input is required');
|
||||
}
|
||||
|
||||
const installerInputsOptions: installerInputsOptions = {
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
distributionName,
|
||||
jdkFile,
|
||||
toolchainIds
|
||||
};
|
||||
|
||||
for (const [index, version] of versions.entries()) {
|
||||
await installVersion(version, installerInputsOptions, index);
|
||||
}
|
||||
}
|
||||
core.endGroup();
|
||||
const matchersPath = path.join(__dirname, '..', '..', '.github');
|
||||
@@ -99,6 +128,19 @@ async function run() {
|
||||
|
||||
run();
|
||||
|
||||
function getJdkFileInput(): string {
|
||||
const jdkFile = core.getInput(constants.INPUT_JDK_FILE);
|
||||
const deprecatedJdkFile = core.getInput(constants.INPUT_JDK_FILE_DEPRECATED);
|
||||
|
||||
if (deprecatedJdkFile) {
|
||||
core.warning(
|
||||
`The '${constants.INPUT_JDK_FILE_DEPRECATED}' input is deprecated and may be removed in a future release. Please use '${constants.INPUT_JDK_FILE}' instead.`
|
||||
);
|
||||
}
|
||||
|
||||
return jdkFile || deprecatedJdkFile;
|
||||
}
|
||||
|
||||
async function installVersion(
|
||||
version: string,
|
||||
options: installerInputsOptions,
|
||||
@@ -110,6 +152,7 @@ async function installVersion(
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
toolchainIds
|
||||
@@ -119,6 +162,7 @@ async function installVersion(
|
||||
architecture,
|
||||
packageType,
|
||||
checkLatest,
|
||||
setDefault,
|
||||
verifySignature,
|
||||
verifySignaturePublicKey,
|
||||
version
|
||||
@@ -155,6 +199,7 @@ interface installerInputsOptions {
|
||||
architecture: string;
|
||||
packageType: string;
|
||||
checkLatest: boolean;
|
||||
setDefault: boolean;
|
||||
verifySignature: boolean;
|
||||
verifySignaturePublicKey: string | undefined;
|
||||
distributionName: string;
|
||||
|
||||
125
src/util.ts
125
src/util.ts
@@ -127,12 +127,18 @@ export function isCacheFeatureAvailable(): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
export interface VersionInfo {
|
||||
version: string;
|
||||
distribution?: string;
|
||||
}
|
||||
|
||||
export function getVersionFromFileContent(
|
||||
content: string,
|
||||
distributionName: string,
|
||||
versionFile: string
|
||||
): string | null {
|
||||
): VersionInfo | null {
|
||||
let javaVersionRegExp: RegExp;
|
||||
let extractedDistribution: string | undefined;
|
||||
|
||||
function getFileName(versionFile: string) {
|
||||
return path.basename(versionFile);
|
||||
@@ -140,18 +146,43 @@ export function getVersionFromFileContent(
|
||||
|
||||
const versionFileName = getFileName(versionFile);
|
||||
if (versionFileName == '.tool-versions') {
|
||||
// Capture an optional asdf-java vendor prefix (e.g. `temurin-`, `corretto-`)
|
||||
// in the `distribution` group so it can be mapped to a setup-java distribution.
|
||||
javaVersionRegExp =
|
||||
/^java\s+(?:\S*-)?(?<version>\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im;
|
||||
/^java\s+(?:(?<distribution>\S*)-)?(?<version>\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im;
|
||||
} else if (versionFileName == '.sdkmanrc') {
|
||||
javaVersionRegExp = /^java\s*=\s*(?<version>[^-]+)/m;
|
||||
// Match both version and optional distribution identifier
|
||||
javaVersionRegExp =
|
||||
/^java\s*=\s*(?<version>[^-\s]+)(?:-(?<distribution>[a-z0-9]+))?/m;
|
||||
} else {
|
||||
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
||||
}
|
||||
|
||||
const capturedVersion = content.match(javaVersionRegExp)?.groups?.version
|
||||
? (content.match(javaVersionRegExp)?.groups?.version as string)
|
||||
const match = content.match(javaVersionRegExp);
|
||||
const capturedVersion = match?.groups?.version
|
||||
? (match.groups.version as string)
|
||||
: '';
|
||||
|
||||
// Extract distribution from .sdkmanrc file
|
||||
if (versionFileName == '.sdkmanrc' && match?.groups?.distribution) {
|
||||
const sdkmanDist = match.groups.distribution;
|
||||
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
||||
core.debug(
|
||||
`Parsed distribution '${extractedDistribution}' from SDKMAN identifier '${sdkmanDist}'`
|
||||
);
|
||||
}
|
||||
|
||||
// Extract distribution from asdf .tool-versions file
|
||||
if (versionFileName == '.tool-versions' && match?.groups?.distribution) {
|
||||
const asdfDist = match.groups.distribution;
|
||||
extractedDistribution = mapAsdfDistribution(asdfDist);
|
||||
if (extractedDistribution) {
|
||||
core.debug(
|
||||
`Parsed distribution '${extractedDistribution}' from asdf identifier '${asdfDist}'`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
core.debug(
|
||||
`Parsed version '${capturedVersion}' from file '${versionFileName}'`
|
||||
);
|
||||
@@ -172,12 +203,92 @@ export function getVersionFromFileContent(
|
||||
return null;
|
||||
}
|
||||
|
||||
if (DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(distributionName)) {
|
||||
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
||||
// (either explicitly provided or extracted from the version file) is in the list.
|
||||
if (
|
||||
DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(
|
||||
extractedDistribution || distributionName
|
||||
)
|
||||
) {
|
||||
const coerceVersion = semver.coerce(version) ?? version;
|
||||
version = semver.major(coerceVersion).toString();
|
||||
}
|
||||
|
||||
return version.toString();
|
||||
return {
|
||||
version: version.toString(),
|
||||
distribution: extractedDistribution
|
||||
};
|
||||
}
|
||||
|
||||
// Map SDKMAN distribution identifiers to setup-java distribution names
|
||||
function mapSdkmanDistribution(sdkmanDist: string): string | undefined {
|
||||
const distributionMap: Record<string, string> = {
|
||||
tem: 'temurin',
|
||||
sem: 'semeru',
|
||||
albba: 'dragonwell',
|
||||
zulu: 'zulu',
|
||||
amzn: 'corretto',
|
||||
graal: 'graalvm',
|
||||
graalce: 'graalvm',
|
||||
librca: 'liberica',
|
||||
ms: 'microsoft',
|
||||
oracle: 'oracle',
|
||||
sapmchn: 'sapmachine',
|
||||
jbr: 'jetbrains',
|
||||
dragonwell: 'dragonwell',
|
||||
kona: 'kona'
|
||||
};
|
||||
|
||||
const mapped = distributionMap[sdkmanDist.toLowerCase()];
|
||||
if (!mapped) {
|
||||
core.warning(
|
||||
`Unknown SDKMAN distribution identifier '${sdkmanDist}'. Please specify the distribution explicitly.`
|
||||
);
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
|
||||
// Map asdf-java (.tool-versions) vendor identifiers to setup-java distribution names.
|
||||
// asdf-java encodes the vendor as a prefix on the version string, e.g.
|
||||
// `java temurin-17.0.3+7` or `java semeru-openj9-11.0.25+9`. Packaging variants
|
||||
// (`-jre`, `-musl`, `-openj9`, `-crac`, `-javafx`, ...) are collapsed onto the
|
||||
// base vendor since setup-java does not distinguish them here.
|
||||
function mapAsdfDistribution(asdfDist: string): string | undefined {
|
||||
const normalized = asdfDist.toLowerCase();
|
||||
|
||||
// Multi-segment vendors that map to a distinct setup-java distribution.
|
||||
if (normalized.startsWith('graalvm-community')) {
|
||||
return 'graalvm-community';
|
||||
}
|
||||
if (normalized.startsWith('oracle-graalvm')) {
|
||||
return 'graalvm';
|
||||
}
|
||||
|
||||
const baseVendor = normalized.split('-')[0];
|
||||
const distributionMap: Record<string, string> = {
|
||||
temurin: 'temurin',
|
||||
adoptopenjdk: 'temurin',
|
||||
zulu: 'zulu',
|
||||
corretto: 'corretto',
|
||||
liberica: 'liberica',
|
||||
microsoft: 'microsoft',
|
||||
semeru: 'semeru',
|
||||
ibm: 'semeru',
|
||||
dragonwell: 'dragonwell',
|
||||
graalvm: 'graalvm',
|
||||
oracle: 'oracle',
|
||||
sapmachine: 'sapmachine',
|
||||
kona: 'kona',
|
||||
jetbrains: 'jetbrains'
|
||||
};
|
||||
|
||||
const mapped = distributionMap[baseVendor];
|
||||
if (!mapped) {
|
||||
core.warning(
|
||||
`Unknown asdf distribution identifier '${asdfDist}'. Please specify the distribution explicitly.`
|
||||
);
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
|
||||
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
|
||||
|
||||
Reference in New Issue
Block a user