mirror of
https://github.com/actions/setup-java.git
synced 2026-07-16 13:52:59 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 03ad4de099 | |||
| d229d2e858 | |||
| bbf0f69670 | |||
| 513edc4f87 | |||
| 62df799a9c | |||
| 176156a187 | |||
| bf7b8deac2 | |||
| 0173e6dd1b | |||
| f45cd82b67 | |||
| e2863ad499 | |||
| 78efe031a6 | |||
| 3be16b57e9 |
@@ -21,6 +21,19 @@
|
|||||||
"message": 4
|
"message": 4
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"owner": "maven-javac",
|
||||||
|
"pattern": [
|
||||||
|
{
|
||||||
|
"regexp": "^\\[(WARNING|ERROR)\\]\\s+(.+?\\.java):\\[(\\d+),(\\d+)\\]\\s+(.+)$",
|
||||||
|
"severity": 1,
|
||||||
|
"file": 2,
|
||||||
|
"line": 3,
|
||||||
|
"column": 4,
|
||||||
|
"message": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
id: setup-java
|
id: setup-java
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
jdk-file: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||||
java-version: '11.0.0-ea'
|
java-version: '11.0.0-ea'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- name: Verify Java version
|
- name: Verify Java version
|
||||||
@@ -88,7 +88,7 @@ jobs:
|
|||||||
id: setup-java
|
id: setup-java
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
jdk-file: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||||
java-version: '11.0.0-ea'
|
java-version: '11.0.0-ea'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- name: Verify Java version
|
- name: Verify Java version
|
||||||
@@ -129,6 +129,7 @@ jobs:
|
|||||||
id: setup-java
|
id: setup-java
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
|
# Intentionally uses the deprecated `jdkFile` alias to keep it covered.
|
||||||
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
|
||||||
java-version: '11.0.0-ea'
|
java-version: '11.0.0-ea'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
|
|||||||
@@ -55,6 +55,15 @@ jobs:
|
|||||||
- distribution: microsoft
|
- distribution: microsoft
|
||||||
os: macos-latest
|
os: macos-latest
|
||||||
version: 25
|
version: 25
|
||||||
|
- distribution: kona
|
||||||
|
os: windows-latest
|
||||||
|
version: 25
|
||||||
|
- distribution: kona
|
||||||
|
os: ubuntu-latest
|
||||||
|
version: 25
|
||||||
|
- distribution: kona
|
||||||
|
os: macos-latest
|
||||||
|
version: 25
|
||||||
- distribution: oracle
|
- distribution: oracle
|
||||||
os: macos-15-intel
|
os: macos-15-intel
|
||||||
version: 17
|
version: 17
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ For more details, see the full release notes on the [releases page](https://git
|
|||||||
|
|
||||||
- `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`).
|
- `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.
|
- `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.
|
- `check-latest`: Setting this option makes the action to check for the latest available version for the version spec.
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ Currently, the following distributions are supported:
|
|||||||
> [!NOTE]
|
> [!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.
|
> - 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/).
|
> - 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.
|
> - 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.
|
> - GraalVM Community is available as `distribution: 'graalvm-community'` for stable JDK 17 and later releases published on GitHub.
|
||||||
|
|
||||||
@@ -138,16 +138,18 @@ 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:
|
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`
|
- 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`
|
- 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.
|
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-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.
|
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.
|
**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 Maven distribution. The wrapper distribution is stored in a **separate** cache entry keyed only on `**/.mvn/wrapper/maven-wrapper.properties`, so it stays cached across the frequent `pom.xml` changes that rotate the main dependency cache key.
|
||||||
|
|
||||||
#### Caching gradle dependencies
|
#### Caching gradle dependencies
|
||||||
```yaml
|
```yaml
|
||||||
@@ -165,6 +167,8 @@ steps:
|
|||||||
```
|
```
|
||||||
Using the `cache: gradle` provides a simple and effective way to cache Gradle dependencies with minimal configuration.
|
Using the `cache: gradle` provides a simple and effective way to cache Gradle dependencies with minimal configuration.
|
||||||
|
|
||||||
|
**Gradle Wrapper:** when `cache: 'gradle'` is enabled, the action also caches and restores the Gradle Wrapper distribution downloaded to `~/.gradle/wrapper` (in addition to the Gradle caches), so wrapper-based (`./gradlew`) builds don't re-download the Gradle distribution. The wrapper distribution is stored in a **separate** cache entry keyed only on `**/gradle-wrapper.properties`, so it stays cached across the frequent `*.gradle*` changes that rotate the main dependency cache key.
|
||||||
|
|
||||||
For projects that require more advanced `Gradle` caching features, such as caching build outputs, support for Gradle configuration cache, encrypted cache storage, fine-grained cache control (including options to enable or disable the cache, set it to read-only or write-only, perform automated cleanup, and define custom cache rules), or optimized performance for complex CI workflows, consider using [`gradle/actions/setup-gradle`](https://github.com/gradle/actions/tree/main/setup-gradle).
|
For projects that require more advanced `Gradle` caching features, such as caching build outputs, support for Gradle configuration cache, encrypted cache storage, fine-grained cache control (including options to enable or disable the cache, set it to read-only or write-only, perform automated cleanup, and define custom cache rules), or optimized performance for complex CI workflows, consider using [`gradle/actions/setup-gradle`](https://github.com/gradle/actions/tree/main/setup-gradle).
|
||||||
|
|
||||||
For setup details and a comprehensive overview of all available features, visit the [setup-gradle documentation](https://github.com/gradle/actions/blob/main/docs/setup-gradle.md).
|
For setup details and a comprehensive overview of all available features, visit the [setup-gradle documentation](https://github.com/gradle/actions/blob/main/docs/setup-gradle.md).
|
||||||
|
|||||||
+169
-12
@@ -78,6 +78,10 @@ describe('dependency cache', () => {
|
|||||||
ReturnType<typeof glob.hashFiles>,
|
ReturnType<typeof glob.hashFiles>,
|
||||||
Parameters<typeof glob.hashFiles>
|
Parameters<typeof glob.hashFiles>
|
||||||
>;
|
>;
|
||||||
|
let spySetOutput: jest.SpyInstance<
|
||||||
|
ReturnType<typeof core.setOutput>,
|
||||||
|
Parameters<typeof core.setOutput>
|
||||||
|
>;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
spyCacheRestore = jest
|
spyCacheRestore = jest
|
||||||
@@ -86,6 +90,7 @@ describe('dependency cache', () => {
|
|||||||
Promise.resolve(undefined)
|
Promise.resolve(undefined)
|
||||||
);
|
);
|
||||||
spyGlobHashFiles = jest.spyOn(glob, 'hashFiles');
|
spyGlobHashFiles = jest.spyOn(glob, 'hashFiles');
|
||||||
|
spySetOutput = jest.spyOn(core, 'setOutput').mockImplementation(() => {});
|
||||||
spyWarning.mockImplementation(() => null);
|
spyWarning.mockImplementation(() => null);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -96,11 +101,11 @@ describe('dependency cache', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('for maven', () => {
|
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(
|
await expect(restore('maven', '')).rejects.toThrow(
|
||||||
`No file in ${projectRoot(
|
`No file in ${projectRoot(
|
||||||
workspace
|
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 () => {
|
it('downloads cache based on pom.xml', async () => {
|
||||||
@@ -108,18 +113,24 @@ describe('dependency cache', () => {
|
|||||||
|
|
||||||
await restore('maven', '');
|
await restore('maven', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||||
[
|
[join(os.homedir(), '.m2', 'repository')],
|
||||||
join(os.homedir(), '.m2', 'repository'),
|
|
||||||
join(os.homedir(), '.m2', 'wrapper', 'dists')
|
|
||||||
],
|
|
||||||
expect.any(String)
|
expect.any(String)
|
||||||
);
|
);
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
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(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('maven cache is not found');
|
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 () => {
|
it('downloads cache based on maven-wrapper.properties', async () => {
|
||||||
createDirectory(join(workspace, '.mvn'));
|
createDirectory(join(workspace, '.mvn'));
|
||||||
createDirectory(join(workspace, '.mvn', 'wrapper'));
|
createDirectory(join(workspace, '.mvn', 'wrapper'));
|
||||||
@@ -129,18 +140,63 @@ describe('dependency cache', () => {
|
|||||||
|
|
||||||
await restore('maven', '');
|
await restore('maven', '');
|
||||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||||
[
|
[join(os.homedir(), '.m2', 'repository')],
|
||||||
join(os.homedir(), '.m2', 'repository'),
|
|
||||||
join(os.homedir(), '.m2', 'wrapper', 'dists')
|
|
||||||
],
|
|
||||||
expect.any(String)
|
expect.any(String)
|
||||||
);
|
);
|
||||||
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
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(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('maven cache is not found');
|
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')],
|
||||||
|
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');
|
||||||
|
});
|
||||||
|
it('restores the maven wrapper distribution cache independently of the main cache', async () => {
|
||||||
|
createFile(join(workspace, 'pom.xml'));
|
||||||
|
createDirectory(join(workspace, '.mvn'));
|
||||||
|
createDirectory(join(workspace, '.mvn', 'wrapper'));
|
||||||
|
createFile(
|
||||||
|
join(workspace, '.mvn', 'wrapper', 'maven-wrapper.properties')
|
||||||
|
);
|
||||||
|
|
||||||
|
await restore('maven', '');
|
||||||
|
// Main cache no longer includes the wrapper distribution.
|
||||||
|
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.m2', 'repository')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
// Wrapper distribution is restored on its own, keyed only on the
|
||||||
|
// maven-wrapper.properties hash.
|
||||||
|
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
|
'**/.mvn/wrapper/maven-wrapper.properties'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('skips the maven wrapper cache when no maven-wrapper.properties exists', async () => {
|
||||||
|
createFile(join(workspace, 'pom.xml'));
|
||||||
|
|
||||||
|
await restore('maven', '');
|
||||||
|
expect(spyCacheRestore).not.toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
describe('for gradle', () => {
|
describe('for gradle', () => {
|
||||||
it('throws error if no build.gradle found', async () => {
|
it('throws error if no build.gradle found', async () => {
|
||||||
@@ -196,6 +252,30 @@ describe('dependency cache', () => {
|
|||||||
expect(spyWarning).not.toHaveBeenCalled();
|
expect(spyWarning).not.toHaveBeenCalled();
|
||||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||||
});
|
});
|
||||||
|
it('restores the gradle wrapper distribution cache independently of the main cache', async () => {
|
||||||
|
createFile(join(workspace, 'build.gradle'));
|
||||||
|
createDirectory(join(workspace, 'gradle'));
|
||||||
|
createDirectory(join(workspace, 'gradle', 'wrapper'));
|
||||||
|
createFile(
|
||||||
|
join(workspace, 'gradle', 'wrapper', 'gradle-wrapper.properties')
|
||||||
|
);
|
||||||
|
|
||||||
|
await restore('gradle', '');
|
||||||
|
// Main cache no longer includes the wrapper distribution.
|
||||||
|
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.gradle', 'caches')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
// Wrapper distribution is restored on its own, keyed only on the
|
||||||
|
// gradle-wrapper.properties hash.
|
||||||
|
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.gradle', 'wrapper')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
expect(spyGlobHashFiles).toHaveBeenCalledWith(
|
||||||
|
'**/gradle-wrapper.properties'
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
describe('for sbt', () => {
|
describe('for sbt', () => {
|
||||||
it('throws error if no build.sbt found', async () => {
|
it('throws error if no build.sbt found', async () => {
|
||||||
@@ -367,6 +447,40 @@ describe('dependency cache', () => {
|
|||||||
expect.stringMatching(/^Cache saved with the key:.*/)
|
expect.stringMatching(/^Cache saved with the key:.*/)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('saves the maven wrapper distribution cache under its own key', async () => {
|
||||||
|
createFile(join(workspace, 'pom.xml'));
|
||||||
|
createStateForWrapperRestore('maven-wrapper', false);
|
||||||
|
|
||||||
|
await save('maven');
|
||||||
|
expect(spyCacheSave).toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
'setup-java-maven-wrapper-primary-key'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('does not save the maven wrapper cache on an exact wrapper hit', async () => {
|
||||||
|
createFile(join(workspace, 'pom.xml'));
|
||||||
|
createStateForWrapperRestore('maven-wrapper', true);
|
||||||
|
|
||||||
|
await save('maven');
|
||||||
|
expect(spyCacheSave).not.toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('does not fail the post step when the wrapper distribution path is missing', async () => {
|
||||||
|
createFile(join(workspace, 'pom.xml'));
|
||||||
|
createStateForWrapperRestore('maven-wrapper', false);
|
||||||
|
spyCacheSave.mockImplementation((paths: string[], key: string) => {
|
||||||
|
if (paths.includes(join(os.homedir(), '.m2', 'wrapper', 'dists'))) {
|
||||||
|
return Promise.reject(
|
||||||
|
new cache.ValidationError('Path Validation Error')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Promise.resolve(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
await expect(save('maven')).resolves.not.toThrow();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
describe('for gradle', () => {
|
describe('for gradle', () => {
|
||||||
it('uploads cache even if no build.gradle found', async () => {
|
it('uploads cache even if no build.gradle found', async () => {
|
||||||
@@ -419,6 +533,26 @@ describe('dependency cache', () => {
|
|||||||
expect.stringMatching(/^Cache saved with the key:.*/)
|
expect.stringMatching(/^Cache saved with the key:.*/)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('saves the gradle wrapper distribution cache under its own key', async () => {
|
||||||
|
createFile(join(workspace, 'build.gradle'));
|
||||||
|
createStateForWrapperRestore('gradle-wrapper', false);
|
||||||
|
|
||||||
|
await save('gradle');
|
||||||
|
expect(spyCacheSave).toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.gradle', 'wrapper')],
|
||||||
|
'setup-java-gradle-wrapper-primary-key'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('does not save the gradle wrapper cache on an exact wrapper hit', async () => {
|
||||||
|
createFile(join(workspace, 'build.gradle'));
|
||||||
|
createStateForWrapperRestore('gradle-wrapper', true);
|
||||||
|
|
||||||
|
await save('gradle');
|
||||||
|
expect(spyCacheSave).not.toHaveBeenCalledWith(
|
||||||
|
[join(os.homedir(), '.gradle', 'wrapper')],
|
||||||
|
expect.any(String)
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
describe('for sbt', () => {
|
describe('for sbt', () => {
|
||||||
it('uploads cache even if no build.sbt found', async () => {
|
it('uploads cache even if no build.sbt found', async () => {
|
||||||
@@ -496,6 +630,29 @@ function createStateForSuccessfulRestore() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create states to emulate a restore process where an additional (wrapper)
|
||||||
|
* cache was restored. When `hit` is true the matched key equals the primary
|
||||||
|
* key, emulating an exact wrapper cache hit.
|
||||||
|
*/
|
||||||
|
function createStateForWrapperRestore(wrapperName: string, hit: boolean) {
|
||||||
|
const primaryKey = `setup-java-${wrapperName}-primary-key`;
|
||||||
|
jest.spyOn(core, 'getState').mockImplementation(name => {
|
||||||
|
switch (name) {
|
||||||
|
case 'cache-primary-key':
|
||||||
|
return 'setup-java-cache-primary-key';
|
||||||
|
case 'cache-matched-key':
|
||||||
|
return 'setup-java-cache-matched-key';
|
||||||
|
case `cache-primary-key-${wrapperName}`:
|
||||||
|
return primaryKey;
|
||||||
|
case `cache-matched-key-${wrapperName}`:
|
||||||
|
return hit ? primaryKey : '';
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function createFile(path: string) {
|
function createFile(path: string) {
|
||||||
core.info(`created a file at ${path}`);
|
core.info(`created a file at ${path}`);
|
||||||
fs.writeFileSync(path, '');
|
fs.writeFileSync(path, '');
|
||||||
|
|||||||
@@ -158,5 +158,45 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"25": [
|
||||||
|
{
|
||||||
|
"version": "25.0.3",
|
||||||
|
"jdkVersion": "25.0.3",
|
||||||
|
"latest": true,
|
||||||
|
"baseUrl": "https://github.com/Tencent/TencentKona-25/releases/download/TencentKona-25.0.3/",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"filename": "TencentKona-25.0.3.b1-jdk_linux-aarch64.tar.gz",
|
||||||
|
"checksum": "2fb77e3ba9c00045ca497ea22210f18dae4bf7df4c87029f5abadd42a5daf8c7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "x86_64",
|
||||||
|
"filename": "TencentKona-25.0.3.b1-jdk_linux-x86_64.tar.gz",
|
||||||
|
"checksum": "47445e6fad020e834055a705bb48fa3cd0727a2c57ad6f1c5206a45f4efb2d67"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"os": "macos",
|
||||||
|
"arch": "aarch64",
|
||||||
|
"filename": "TencentKona-25.0.3.b1_jdk_macosx-aarch64_notarized.tar.gz",
|
||||||
|
"checksum": "e29405eff95da412ed7ecc890e6ef5ebbfcd9ab334005b3d32d1700bbe4204d2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"os": "macos",
|
||||||
|
"arch": "x86_64",
|
||||||
|
"filename": "TencentKona-25.0.3.b1_jdk_macosx-x86_64_notarized.tar.gz",
|
||||||
|
"checksum": "d512db5c079db16bd3a9c86d9cb979808994e90e4de29e17d27e5219fe488659"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "x86_64",
|
||||||
|
"filename": "TencentKona-25.0.3.b1_jdk_windows-x86_64_signed.zip",
|
||||||
|
"checksum": "865bce92ccbbca75115076e618a98baa1d0f30fcccdce954c0a22bee33d6ae83"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+576
-144
@@ -1,254 +1,686 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": 10996,
|
"package_uuid": "test-uuid-10996",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
|
||||||
"name": "zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
"name": "zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
||||||
"zulu_version": [8, 1, 0, 10],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-linux.tar.gz",
|
||||||
"jdk_version": [8, 0, 5, 13]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10997,
|
"package_uuid": "test-uuid-10997",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
|
||||||
"name": "zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
"name": "zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
||||||
"zulu_version": [8, 2, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-linux.tar.gz",
|
||||||
"jdk_version": [8, 0, 11, 12]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
11
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10346,
|
"package_uuid": "test-uuid-10346",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
"name": "zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 21, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 131, 11]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
131
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 11,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
21,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10362,
|
"package_uuid": "test-uuid-10362",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
"name": "zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 23, 0, 3],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 144, 1]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
144
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 1,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
23,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10399,
|
"package_uuid": "test-uuid-10399",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
"name": "zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 25, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 152, 16]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
152
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 16,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
25,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11355,
|
"package_uuid": "test-uuid-11355",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
"name": "zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 46, 0, 19],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 252, 14]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
252
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 14,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
46,
|
||||||
|
0,
|
||||||
|
19
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11481,
|
"package_uuid": "test-uuid-11481",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
"name": "zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 47],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 17]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 17,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
47
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11622,
|
"package_uuid": "test-uuid-11622",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
"name": "zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 51],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 19]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 19,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
51
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11535,
|
"package_uuid": "test-uuid-11535",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
"name": "zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 49],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 18]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 18,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
49
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12424,
|
"package_uuid": "test-uuid-12424",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
|
||||||
"name": "zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
"name": "zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
||||||
"zulu_version": [8, 52, 0, 23],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-linux_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 282, 8]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
282
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
52,
|
||||||
|
0,
|
||||||
|
23
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10383,
|
"package_uuid": "test-uuid-10383",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
|
||||||
"name": "zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
"name": "zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
||||||
"zulu_version": [9, 0, 0, 15],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-linux_x64.tar.gz",
|
||||||
"jdk_version": [9, 0, 0, 0]
|
"java_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 0,
|
||||||
|
"distro_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10413,
|
"package_uuid": "test-uuid-10413",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
"name": "zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [9, 0, 1, 3],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [9, 0, 1, 0]
|
"java_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 0,
|
||||||
|
"distro_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10503,
|
"package_uuid": "test-uuid-10503",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
"name": "zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [10, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [10, 0, 1, 9]
|
"java_version": [
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
10,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10541,
|
"package_uuid": "test-uuid-10541",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
|
||||||
"name": "zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
"name": "zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
||||||
"zulu_version": [10, 3, 5, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-linux_x64.tar.gz",
|
||||||
"jdk_version": [10, 0, 2, 13]
|
"java_version": [
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
10,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10576,
|
"package_uuid": "test-uuid-10576",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
"name": "zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 1, 13]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10604,
|
"package_uuid": "test-uuid-10604",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
"name": "zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 29, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 2, 7]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
29,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10687,
|
"package_uuid": "test-uuid-10687",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
"name": "zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 31, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 3, 7]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
31,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10856,
|
"package_uuid": "test-uuid-10856",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
"name": "zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 13, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
13,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10933,
|
"package_uuid": "test-uuid-10933",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
"name": "zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 15, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10933,
|
"package_uuid": "test-uuid-10933",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
"name": "zulu11.35.15-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12397,
|
"package_uuid": "test-uuid-12397",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
|
||||||
"name": "zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
"name": "zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
||||||
"zulu_version": [11, 45, 27, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 10, 9]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
45,
|
||||||
|
27,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10667,
|
"package_uuid": "test-uuid-10667",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
|
||||||
"name": "zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
"name": "zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
||||||
"zulu_version": [12, 1, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-linux_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 0, 33]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 33,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10710,
|
"package_uuid": "test-uuid-10710",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
"name": "zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [12, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 1, 12]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10780,
|
"package_uuid": "test-uuid-10780",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
|
||||||
"name": "zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
"name": "zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
||||||
"zulu_version": [12, 3, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-linux_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 2, 3]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 3,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
3,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10846,
|
"package_uuid": "test-uuid-10846",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
|
||||||
"name": "zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
"name": "zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
||||||
"zulu_version": [13, 27, 9, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-linux_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 0, 33]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 33,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
27,
|
||||||
|
9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10888,
|
"package_uuid": "test-uuid-10888",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
"name": "zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [13, 28, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 1, 10]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
28,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11073,
|
"package_uuid": "test-uuid-11073",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
|
||||||
"name": "zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
"name": "zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
||||||
"zulu_version": [13, 29, 9, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-linux_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 2, 6]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 6,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
29,
|
||||||
|
9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12408,
|
"package_uuid": "test-uuid-12408",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
|
||||||
"name": "zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
"name": "zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
||||||
"zulu_version": [13, 37, 21, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-linux_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 6, 5]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 5,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
37,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11236,
|
"package_uuid": "test-uuid-11236",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
|
||||||
"name": "zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
"name": "zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
||||||
"zulu_version": [14, 27, 1, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-linux_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 0, 36]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 36,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
27,
|
||||||
|
1,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11349,
|
"package_uuid": "test-uuid-11349",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
"name": "zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [14, 28, 21, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 1, 8]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
28,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11513,
|
"package_uuid": "test-uuid-11513",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
|
||||||
"name": "zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
"name": "zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
||||||
"zulu_version": [14, 29, 23, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-linux_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 2, 12]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
29,
|
||||||
|
23,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11780,
|
"package_uuid": "test-uuid-11780",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
|
||||||
"name": "zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
"name": "zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
||||||
"zulu_version": [15, 27, 17, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 0, 36]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 36,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
27,
|
||||||
|
17,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11924,
|
"package_uuid": "test-uuid-11924",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
"name": "zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [15, 28, 13, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 1, 8]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
28,
|
||||||
|
13,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12101,
|
"package_uuid": "test-uuid-12101",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
|
||||||
"name": "zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
"name": "zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||||
"zulu_version": [15, 28, 51, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-linux_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 1, 9]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
28,
|
||||||
|
51,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12445,
|
"package_uuid": "test-uuid-12445",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
|
||||||
"name": "zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
"name": "zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
||||||
"zulu_version": [15, 29, 15, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-linux_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 2, 7]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
29,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12447,
|
"package_uuid": "test-uuid-12447",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
|
||||||
"name": "zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
"name": "zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
||||||
"zulu_version": [21, 32, 17, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
|
||||||
"jdk_version": [21, 0, 2, 6]
|
"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,
|
"package_uuid": "test-uuid-10996",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
|
||||||
"name": "zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
"name": "zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
||||||
"zulu_version": [8, 1, 0, 10],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-macosx.tar.gz",
|
||||||
"jdk_version": [8, 0, 5, 13]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10997,
|
"package_uuid": "test-uuid-10997",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
|
||||||
"name": "zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
"name": "zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
||||||
"zulu_version": [8, 2, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-macosx.tar.gz",
|
||||||
"jdk_version": [8, 0, 11, 12]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
11
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10346,
|
"package_uuid": "test-uuid-10346",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
"name": "zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 21, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 131, 11]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
131
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 11,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
21,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10362,
|
"package_uuid": "test-uuid-10362",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
"name": "zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 23, 0, 3],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 144, 1]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
144
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 1,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
23,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10399,
|
"package_uuid": "test-uuid-10399",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
"name": "zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 25, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 152, 16]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
152
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 16,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
25,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11355,
|
"package_uuid": "test-uuid-11355",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
"name": "zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 46, 0, 19],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 252, 14]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
252
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 14,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
46,
|
||||||
|
0,
|
||||||
|
19
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11481,
|
"package_uuid": "test-uuid-11481",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
"name": "zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 47],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 17]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 17,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
47
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11622,
|
"package_uuid": "test-uuid-11622",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
"name": "zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 51],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 19]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 19,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
51
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11535,
|
"package_uuid": "test-uuid-11535",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
"name": "zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 49],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 18]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 18,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
49
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12424,
|
"package_uuid": "test-uuid-12424",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
"name": "zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
||||||
"zulu_version": [8, 52, 0, 23],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-macosx_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 282, 8]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
282
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
52,
|
||||||
|
0,
|
||||||
|
23
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10383,
|
"package_uuid": "test-uuid-10383",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
"name": "zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
||||||
"zulu_version": [9, 0, 0, 15],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-macosx_x64.tar.gz",
|
||||||
"jdk_version": [9, 0, 0, 0]
|
"java_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 0,
|
||||||
|
"distro_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10413,
|
"package_uuid": "test-uuid-10413",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
"name": "zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [9, 0, 1, 3],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [9, 0, 1, 0]
|
"java_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 0,
|
||||||
|
"distro_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10503,
|
"package_uuid": "test-uuid-10503",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
"name": "zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [10, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [10, 0, 1, 9]
|
"java_version": [
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
10,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10541,
|
"package_uuid": "test-uuid-10541",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
"name": "zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
||||||
"zulu_version": [10, 3, 5, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-macosx_x64.tar.gz",
|
||||||
"jdk_version": [10, 0, 2, 13]
|
"java_version": [
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
10,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10576,
|
"package_uuid": "test-uuid-10576",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
"name": "zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 1, 13]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10604,
|
"package_uuid": "test-uuid-10604",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
"name": "zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 29, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 2, 7]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
29,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10687,
|
"package_uuid": "test-uuid-10687",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
"name": "zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 31, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 3, 7]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
31,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10856,
|
"package_uuid": "test-uuid-10856",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
"name": "zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 13, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
13,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10933,
|
"package_uuid": "test-uuid-10933",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
"name": "zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 15, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10933,
|
"package_uuid": "test-uuid-10933",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
"name": "zulu11.35.15-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12397,
|
"package_uuid": "test-uuid-12397",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
"name": "zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
||||||
"zulu_version": [11, 45, 27, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 10, 9]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
45,
|
||||||
|
27,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10667,
|
"package_uuid": "test-uuid-10667",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
"name": "zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
||||||
"zulu_version": [12, 1, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-macosx_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 0, 33]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 33,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10710,
|
"package_uuid": "test-uuid-10710",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
"name": "zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [12, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 1, 12]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10780,
|
"package_uuid": "test-uuid-10780",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
"name": "zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
||||||
"zulu_version": [12, 3, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-macosx_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 2, 3]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 3,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
3,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10846,
|
"package_uuid": "test-uuid-10846",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
"name": "zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
||||||
"zulu_version": [13, 27, 9, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-macosx_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 0, 33]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 33,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
27,
|
||||||
|
9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10888,
|
"package_uuid": "test-uuid-10888",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
"name": "zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [13, 28, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 1, 10]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
28,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11073,
|
"package_uuid": "test-uuid-11073",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
"name": "zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
||||||
"zulu_version": [13, 29, 9, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-macosx_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 2, 6]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 6,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
29,
|
||||||
|
9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12408,
|
"package_uuid": "test-uuid-12408",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
"name": "zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
||||||
"zulu_version": [13, 37, 21, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-macosx_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 6, 5]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 5,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
37,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11236,
|
"package_uuid": "test-uuid-11236",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
"name": "zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
||||||
"zulu_version": [14, 27, 1, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-macosx_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 0, 36]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 36,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
27,
|
||||||
|
1,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11349,
|
"package_uuid": "test-uuid-11349",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
"name": "zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [14, 28, 21, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 1, 8]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
28,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11513,
|
"package_uuid": "test-uuid-11513",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
"name": "zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
||||||
"zulu_version": [14, 29, 23, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-macosx_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 2, 12]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
29,
|
||||||
|
23,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11780,
|
"package_uuid": "test-uuid-11780",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
"name": "zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
||||||
"zulu_version": [15, 27, 17, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 0, 36]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 36,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
27,
|
||||||
|
17,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11924,
|
"package_uuid": "test-uuid-11924",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
"name": "zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [15, 28, 13, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 1, 8]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
28,
|
||||||
|
13,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12101,
|
"package_uuid": "test-uuid-12101",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
"name": "zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||||
"zulu_version": [15, 28, 51, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-macosx_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 1, 9]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
28,
|
||||||
|
51,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12445,
|
"package_uuid": "test-uuid-12445",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
|
||||||
"name": "zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
"name": "zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
||||||
"zulu_version": [15, 29, 15, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-macosx_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 2, 7]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
29,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
+577
-145
@@ -1,254 +1,686 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": 10996,
|
"package_uuid": "test-uuid-10996",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
|
||||||
"name": "zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
"name": "zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
||||||
"zulu_version": [8, 1, 0, 10],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_05-8.1.0.10-windows.tar.gz",
|
||||||
"jdk_version": [8, 0, 5, 13]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10997,
|
"package_uuid": "test-uuid-10997",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
|
||||||
"name": "zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
"name": "zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
||||||
"zulu_version": [8, 2, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu1.8.0_11-8.2.0.1-windows.tar.gz",
|
||||||
"jdk_version": [8, 0, 11, 12]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
11
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10346,
|
"package_uuid": "test-uuid-10346",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
"name": "zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 21, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 131, 11]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
131
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 11,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
21,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10362,
|
"package_uuid": "test-uuid-10362",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
"name": "zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 23, 0, 3],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.23.0.3-jdk8.0.144-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 144, 1]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
144
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 1,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
23,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10399,
|
"package_uuid": "test-uuid-10399",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
"name": "zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 25, 0, 1],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.25.0.1-jdk8.0.152-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 152, 16]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
152
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 16,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
25,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11355,
|
"package_uuid": "test-uuid-11355",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
"name": "zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 46, 0, 19],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.46.0.19-ca-jdk8.0.252-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 252, 14]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
252
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 14,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
46,
|
||||||
|
0,
|
||||||
|
19
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11481,
|
"package_uuid": "test-uuid-11481",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
"name": "zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 47],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.47-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 17]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 17,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
47
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11622,
|
"package_uuid": "test-uuid-11622",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
"name": "zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 51],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.51-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 19]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 19,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
51
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11535,
|
"package_uuid": "test-uuid-11535",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
"name": "zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 48, 0, 49],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.48.0.49-ca-jdk8.0.262-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 262, 18]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
262
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 18,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
48,
|
||||||
|
0,
|
||||||
|
49
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12424,
|
"package_uuid": "test-uuid-12424",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
|
||||||
"name": "zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
"name": "zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
||||||
"zulu_version": [8, 52, 0, 23],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu8.52.0.23-ca-jdk8.0.282-windows_x64.tar.gz",
|
||||||
"jdk_version": [8, 0, 282, 8]
|
"java_version": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
282
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
8,
|
||||||
|
52,
|
||||||
|
0,
|
||||||
|
23
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10383,
|
"package_uuid": "test-uuid-10383",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
|
||||||
"name": "zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
"name": "zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
||||||
"zulu_version": [9, 0, 0, 15],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.0.15-jdk9.0.0-windows_x64.tar.gz",
|
||||||
"jdk_version": [9, 0, 0, 0]
|
"java_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 0,
|
||||||
|
"distro_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10413,
|
"package_uuid": "test-uuid-10413",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
"name": "zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [9, 0, 1, 3],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu9.0.1.3-jdk9.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [9, 0, 1, 0]
|
"java_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 0,
|
||||||
|
"distro_version": [
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10503,
|
"package_uuid": "test-uuid-10503",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
"name": "zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [10, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.2+3-jdk10.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [10, 0, 1, 9]
|
"java_version": [
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
10,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10541,
|
"package_uuid": "test-uuid-10541",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
|
||||||
"name": "zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
"name": "zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
||||||
"zulu_version": [10, 3, 5, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu10.3+5-jdk10.0.2-windows_x64.tar.gz",
|
||||||
"jdk_version": [10, 0, 2, 13]
|
"java_version": [
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
10,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10576,
|
"package_uuid": "test-uuid-10576",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
"name": "zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 1, 13]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 13,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10604,
|
"package_uuid": "test-uuid-10604",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
"name": "zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 29, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.29.3-ca-jdk11.0.2-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 2, 7]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
29,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10687,
|
"package_uuid": "test-uuid-10687",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
"name": "zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 31, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.31.11-ca-jdk11.0.3-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 3, 7]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
31,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10856,
|
"package_uuid": "test-uuid-10856",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
"name": "zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 13, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.13-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
13,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10933,
|
"package_uuid": "test-uuid-10933",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
"name": "zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 15, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10933,
|
"package_uuid": "test-uuid-10933",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
"name": "zulu11.35.15-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 35, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.35.11-ca-jdk11.0.5-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 5, 10]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
35,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12397,
|
"package_uuid": "test-uuid-12397",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
|
||||||
"name": "zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
"name": "zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
||||||
"zulu_version": [11, 45, 27, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-windows_x64.tar.gz",
|
||||||
"jdk_version": [11, 0, 10, 9]
|
"java_version": [
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
11,
|
||||||
|
45,
|
||||||
|
27,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10667,
|
"package_uuid": "test-uuid-10667",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
|
||||||
"name": "zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
"name": "zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
||||||
"zulu_version": [12, 1, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.1.3-ca-jdk12.0.0-windows_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 0, 33]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 33,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10710,
|
"package_uuid": "test-uuid-10710",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
"name": "zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [12, 2, 3, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.2.3-ca-jdk12.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 1, 12]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10780,
|
"package_uuid": "test-uuid-10780",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
|
||||||
"name": "zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
"name": "zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
||||||
"zulu_version": [12, 3, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu12.3.11-ca-jdk12.0.2-windows_x64.tar.gz",
|
||||||
"jdk_version": [12, 0, 2, 3]
|
"java_version": [
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 3,
|
||||||
|
"distro_version": [
|
||||||
|
12,
|
||||||
|
3,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10846,
|
"package_uuid": "test-uuid-10846",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
|
||||||
"name": "zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
"name": "zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
||||||
"zulu_version": [13, 27, 9, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.27.9-ca-jdk13.0.0-windows_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 0, 33]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 33,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
27,
|
||||||
|
9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10888,
|
"package_uuid": "test-uuid-10888",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
"name": "zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [13, 28, 11, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.28.11-ca-jdk13.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 1, 10]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 10,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
28,
|
||||||
|
11,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11073,
|
"package_uuid": "test-uuid-11073",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
|
||||||
"name": "zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
"name": "zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
||||||
"zulu_version": [13, 29, 9, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.29.9-ca-jdk13.0.2-windows_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 2, 6]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 6,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
29,
|
||||||
|
9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12408,
|
"package_uuid": "test-uuid-12408",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
|
||||||
"name": "zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
"name": "zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
||||||
"zulu_version": [13, 37, 21, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu13.37.21-ca-jdk13.0.6-windows_x64.tar.gz",
|
||||||
"jdk_version": [13, 0, 6, 5]
|
"java_version": [
|
||||||
|
13,
|
||||||
|
0,
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 5,
|
||||||
|
"distro_version": [
|
||||||
|
13,
|
||||||
|
37,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11236,
|
"package_uuid": "test-uuid-11236",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
|
||||||
"name": "zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
"name": "zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
||||||
"zulu_version": [14, 27, 1, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.27.1-ca-jdk14.0.0-windows_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 0, 36]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 36,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
27,
|
||||||
|
1,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11349,
|
"package_uuid": "test-uuid-11349",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
"name": "zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [14, 28, 21, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 1, 8]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
28,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11513,
|
"package_uuid": "test-uuid-11513",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
|
||||||
"name": "zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
"name": "zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
||||||
"zulu_version": [14, 29, 23, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu14.29.23-ca-jdk14.0.2-windows_x64.tar.gz",
|
||||||
"jdk_version": [14, 0, 2, 12]
|
"java_version": [
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 12,
|
||||||
|
"distro_version": [
|
||||||
|
14,
|
||||||
|
29,
|
||||||
|
23,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11780,
|
"package_uuid": "test-uuid-11780",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
|
||||||
"name": "zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
"name": "zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
||||||
"zulu_version": [15, 27, 17, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-windows_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 0, 36]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 36,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
27,
|
||||||
|
17,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11924,
|
"package_uuid": "test-uuid-11924",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
"name": "zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [15, 28, 13, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.13-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 1, 8]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 8,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
28,
|
||||||
|
13,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12101,
|
"package_uuid": "test-uuid-12101",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
|
||||||
"name": "zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
"name": "zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||||
"zulu_version": [15, 28, 51, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.28.51-ca-jdk15.0.1-windows_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 1, 9]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 9,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
28,
|
||||||
|
51,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12445,
|
"package_uuid": "test-uuid-12445",
|
||||||
"url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
|
||||||
"name": "zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
"name": "zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
||||||
"zulu_version": [15, 29, 15, 0],
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu15.29.15-ca-jdk15.0.2-windows_x64.tar.gz",
|
||||||
"jdk_version": [15, 0, 2, 7]
|
"java_version": [
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
15,
|
||||||
|
29,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12446,
|
"package_uuid": "test-uuid-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_aarch64.zip",
|
||||||
"name": "zulu17.48.15-ca-jdk17.0.10-win_aarch4.zip",
|
"download_url": "https://cdn.azul.com/zulu/bin/zulu17.48.15-ca-jdk17.0.10-windows_aarch64.zip",
|
||||||
"zulu_version": [17, 48, 15, 0],
|
"java_version": [
|
||||||
"jdk_version": [17, 0, 10, 7]
|
17,
|
||||||
|
0,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"openjdk_build_number": 7,
|
||||||
|
"distro_version": [
|
||||||
|
17,
|
||||||
|
48,
|
||||||
|
15,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latest": false,
|
||||||
|
"availability_type": "ca"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -28,7 +28,9 @@ describe('Check getAvailableReleases', () => {
|
|||||||
['11', 'linux', 'x86_64', 'linux-x86_64'],
|
['11', 'linux', 'x86_64', 'linux-x86_64'],
|
||||||
['11.0.25', 'macos', 'aarch64', 'macosx-aarch64'],
|
['11.0.25', 'macos', 'aarch64', 'macosx-aarch64'],
|
||||||
['17.0.13', 'windows', 'x86_64', 'windows-x86_64'],
|
['17.0.13', 'windows', 'x86_64', 'windows-x86_64'],
|
||||||
['21.0.5', 'linux', 'x86_64', 'linux-x86_64']
|
['21.0.5', 'linux', 'x86_64', 'linux-x86_64'],
|
||||||
|
['25', 'linux', 'aarch64', 'linux-aarch64'],
|
||||||
|
['25.0.3', 'macos', 'x86_64', 'macosx-x86_64']
|
||||||
])(
|
])(
|
||||||
'should get releases with the specified version "%s", OS "%s" and arch "%s"',
|
'should get releases with the specified version "%s", OS "%s" and arch "%s"',
|
||||||
async (
|
async (
|
||||||
@@ -41,7 +43,7 @@ describe('Check getAvailableReleases', () => {
|
|||||||
|
|
||||||
const releases = await distribution['getAvailableReleases']();
|
const releases = await distribution['getAvailableReleases']();
|
||||||
expect(releases).not.toBeNull();
|
expect(releases).not.toBeNull();
|
||||||
expect(releases.length).toBe(4);
|
expect(releases.length).toBe(5);
|
||||||
releases.forEach(release =>
|
releases.forEach(release =>
|
||||||
expect(release.downloadUrl).toContain(expectedPattern)
|
expect(release.downloadUrl).toContain(expectedPattern)
|
||||||
);
|
);
|
||||||
@@ -173,6 +175,37 @@ describe('Check findPackageForDownload', () => {
|
|||||||
'windows',
|
'windows',
|
||||||
'x86_64',
|
'x86_64',
|
||||||
'https://github.com/Tencent/TencentKona-21/releases/download/TencentKona-21.0.5/TencentKona-21.0.5.b1_jdk_windows-x86_64_signed.zip'
|
'https://github.com/Tencent/TencentKona-21/releases/download/TencentKona-21.0.5/TencentKona-21.0.5.b1_jdk_windows-x86_64_signed.zip'
|
||||||
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
'25',
|
||||||
|
'linux',
|
||||||
|
'aarch64',
|
||||||
|
'https://github.com/Tencent/TencentKona-25/releases/download/TencentKona-25.0.3/TencentKona-25.0.3.b1-jdk_linux-aarch64.tar.gz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'25.0.3',
|
||||||
|
'linux',
|
||||||
|
'x86_64',
|
||||||
|
'https://github.com/Tencent/TencentKona-25/releases/download/TencentKona-25.0.3/TencentKona-25.0.3.b1-jdk_linux-x86_64.tar.gz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'25.0.3',
|
||||||
|
'macos',
|
||||||
|
'aarch64',
|
||||||
|
'https://github.com/Tencent/TencentKona-25/releases/download/TencentKona-25.0.3/TencentKona-25.0.3.b1_jdk_macosx-aarch64_notarized.tar.gz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'25.0.3',
|
||||||
|
'macos',
|
||||||
|
'x86_64',
|
||||||
|
'https://github.com/Tencent/TencentKona-25/releases/download/TencentKona-25.0.3/TencentKona-25.0.3.b1_jdk_macosx-x86_64_notarized.tar.gz'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'25.0.3',
|
||||||
|
'windows',
|
||||||
|
'x86_64',
|
||||||
|
'https://github.com/Tencent/TencentKona-25/releases/download/TencentKona-25.0.3/TencentKona-25.0.3.b1_jdk_windows-x86_64_signed.zip'
|
||||||
]
|
]
|
||||||
])(
|
])(
|
||||||
'should return the download URL with the specified version "%s", OS "%s" and arch "%s"',
|
'should return the download URL with the specified version "%s", OS "%s" and arch "%s"',
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ describe('getAvailableVersions', () => {
|
|||||||
spyHttpClient.mockReturnValue({
|
spyHttpClient.mockReturnValue({
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
headers: {},
|
headers: {},
|
||||||
result: manifestData as IZuluVersions[]
|
result: [] as IZuluVersions[]
|
||||||
});
|
});
|
||||||
|
|
||||||
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
||||||
@@ -45,7 +45,7 @@ describe('getAvailableVersions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jre',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk+fx',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jre+fx',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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) => {
|
])('build correct url for %s -> %s', async (input, parsedUrl) => {
|
||||||
const distribution = new ZuluDistribution(input);
|
const distribution = new ZuluDistribution(input);
|
||||||
distribution['getPlatformOption'] = () => 'macos';
|
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']();
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
@@ -121,16 +130,12 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
});
|
});
|
||||||
|
|
||||||
type DistroArch = {
|
|
||||||
bitness: string;
|
|
||||||
arch: string;
|
|
||||||
};
|
|
||||||
it.each([
|
it.each([
|
||||||
['amd64', {bitness: '64', arch: 'x86'}],
|
['amd64', 'x64'],
|
||||||
['arm64', {bitness: '64', arch: 'arm'}]
|
['arm64', 'aarch64']
|
||||||
])(
|
])(
|
||||||
'defaults to os.arch(): %s mapped to distro arch: %s',
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
async (osArch: string, distroArch: DistroArch) => {
|
async (osArch: string, distroArch: string) => {
|
||||||
jest
|
jest
|
||||||
.spyOn(os, 'arch')
|
.spyOn(os, 'arch')
|
||||||
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
||||||
@@ -142,7 +147,7 @@ describe('getAvailableVersions', () => {
|
|||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
distribution['getPlatformOption'] = () => 'macos';
|
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']();
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
@@ -152,6 +157,18 @@ describe('getAvailableVersions', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
it('load available versions', async () => {
|
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({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
architecture: 'x86',
|
architecture: 'x86',
|
||||||
@@ -165,10 +182,11 @@ describe('getAvailableVersions', () => {
|
|||||||
|
|
||||||
describe('getArchitectureOptions', () => {
|
describe('getArchitectureOptions', () => {
|
||||||
it.each([
|
it.each([
|
||||||
[{architecture: 'x64'}, {arch: 'x86', hw_bitness: '64', abi: ''}],
|
[{architecture: 'x64'}, 'x64'],
|
||||||
[{architecture: 'x86'}, {arch: 'x86', hw_bitness: '32', abi: ''}],
|
[{architecture: 'x86'}, 'i686'],
|
||||||
[{architecture: 'x32'}, {arch: 'x32', hw_bitness: '', abi: ''}],
|
[{architecture: 'aarch64'}, 'aarch64'],
|
||||||
[{architecture: 'arm'}, {arch: 'arm', hw_bitness: '', abi: ''}]
|
[{architecture: 'arm64'}, 'aarch64'],
|
||||||
|
[{architecture: 'arm'}, 'arm']
|
||||||
])('%s -> %s', (input, expected) => {
|
])('%s -> %s', (input, expected) => {
|
||||||
const distribution = new ZuluDistribution({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
@@ -176,7 +194,7 @@ describe('getArchitectureOptions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
expect(distribution['getArchitectureOptions']()).toEqual(expected);
|
expect(distribution['getArchitectureOptions']()).toBe(expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ describe('getAvailableVersions', () => {
|
|||||||
spyHttpClient.mockReturnValue({
|
spyHttpClient.mockReturnValue({
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
headers: {},
|
headers: {},
|
||||||
result: manifestData as IZuluVersions[]
|
result: [] as IZuluVersions[]
|
||||||
});
|
});
|
||||||
|
|
||||||
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
||||||
@@ -46,7 +46,7 @@ describe('getAvailableVersions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jre',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk+fx',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jre+fx',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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) => {
|
])('build correct url for %s -> %s', async (input, parsedUrl) => {
|
||||||
const distribution = new ZuluDistribution(input);
|
const distribution = new ZuluDistribution(input);
|
||||||
distribution['getPlatformOption'] = () => 'linux';
|
distribution['getPlatformOption'] = () => 'linux_glibc';
|
||||||
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']();
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
@@ -122,16 +131,12 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
});
|
});
|
||||||
|
|
||||||
type DistroArch = {
|
|
||||||
bitness: string;
|
|
||||||
arch: string;
|
|
||||||
};
|
|
||||||
it.each([
|
it.each([
|
||||||
['amd64', {bitness: '64', arch: 'x86'}],
|
['amd64', 'x64'],
|
||||||
['arm64', {bitness: '64', arch: 'arm'}]
|
['arm64', 'aarch64']
|
||||||
])(
|
])(
|
||||||
'defaults to os.arch(): %s mapped to distro arch: %s',
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
async (osArch: string, distroArch: DistroArch) => {
|
async (osArch: string, distroArch: string) => {
|
||||||
jest
|
jest
|
||||||
.spyOn(os, 'arch')
|
.spyOn(os, 'arch')
|
||||||
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
||||||
@@ -142,10 +147,10 @@ describe('getAvailableVersions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
distribution['getPlatformOption'] = () => 'linux';
|
distribution['getPlatformOption'] = () => 'linux_glibc';
|
||||||
// Override extension for linux default arch case to match util behavior
|
// Override extension for linux default arch case to match util behavior
|
||||||
spyUtilGetDownloadArchiveExtension.mockReturnValue('tar.gz');
|
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']();
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
@@ -155,6 +160,18 @@ describe('getAvailableVersions', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
it('load available versions', async () => {
|
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({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
architecture: 'x86',
|
architecture: 'x86',
|
||||||
@@ -168,10 +185,11 @@ describe('getAvailableVersions', () => {
|
|||||||
|
|
||||||
describe('getArchitectureOptions', () => {
|
describe('getArchitectureOptions', () => {
|
||||||
it.each([
|
it.each([
|
||||||
[{architecture: 'x64'}, {arch: 'x86', hw_bitness: '64', abi: ''}],
|
[{architecture: 'x64'}, 'x64'],
|
||||||
[{architecture: 'x86'}, {arch: 'x86', hw_bitness: '32', abi: ''}],
|
[{architecture: 'x86'}, 'i686'],
|
||||||
[{architecture: 'x32'}, {arch: 'x32', hw_bitness: '', abi: ''}],
|
[{architecture: 'aarch64'}, 'aarch64'],
|
||||||
[{architecture: 'arm'}, {arch: 'arm', hw_bitness: '', abi: ''}]
|
[{architecture: 'arm64'}, 'aarch64'],
|
||||||
|
[{architecture: 'arm'}, 'arm']
|
||||||
])('%s -> %s', (input, expected) => {
|
])('%s -> %s', (input, expected) => {
|
||||||
const distribution = new ZuluDistribution({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
@@ -179,7 +197,7 @@ describe('getArchitectureOptions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
expect(distribution['getArchitectureOptions']()).toEqual(expected);
|
expect(distribution['getArchitectureOptions']()).toBe(expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ describe('getAvailableVersions', () => {
|
|||||||
spyHttpClient.mockReturnValue({
|
spyHttpClient.mockReturnValue({
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
headers: {},
|
headers: {},
|
||||||
result: manifestData as IZuluVersions[]
|
result: [] as IZuluVersions[]
|
||||||
});
|
});
|
||||||
|
|
||||||
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
spyUtilGetDownloadArchiveExtension = jest.spyOn(
|
||||||
@@ -46,7 +46,7 @@ describe('getAvailableVersions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jre',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk+fx',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jre+fx',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
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) => {
|
])('build correct url for %s -> %s', async (input, parsedUrl) => {
|
||||||
const distribution = new ZuluDistribution(input);
|
const distribution = new ZuluDistribution(input);
|
||||||
distribution['getPlatformOption'] = () => 'windows';
|
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']();
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
@@ -122,16 +131,12 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
});
|
});
|
||||||
|
|
||||||
type DistroArch = {
|
|
||||||
bitness: string;
|
|
||||||
arch: string;
|
|
||||||
};
|
|
||||||
it.each([
|
it.each([
|
||||||
['amd64', {bitness: '64', arch: 'x86'}],
|
['amd64', 'x64'],
|
||||||
['arm64', {bitness: '64', arch: 'arm'}]
|
['arm64', 'aarch64']
|
||||||
])(
|
])(
|
||||||
'defaults to os.arch(): %s mapped to distro arch: %s',
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
async (osArch: string, distroArch: DistroArch) => {
|
async (osArch: string, distroArch: string) => {
|
||||||
jest
|
jest
|
||||||
.spyOn(os, 'arch')
|
.spyOn(os, 'arch')
|
||||||
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
.mockReturnValue(osArch as ReturnType<typeof os.arch>);
|
||||||
@@ -143,7 +148,7 @@ describe('getAvailableVersions', () => {
|
|||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
distribution['getPlatformOption'] = () => 'windows';
|
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']();
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
@@ -153,6 +158,18 @@ describe('getAvailableVersions', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
it('load available versions', async () => {
|
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({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
architecture: 'x86',
|
architecture: 'x86',
|
||||||
@@ -166,10 +183,11 @@ describe('getAvailableVersions', () => {
|
|||||||
|
|
||||||
describe('getArchitectureOptions', () => {
|
describe('getArchitectureOptions', () => {
|
||||||
it.each([
|
it.each([
|
||||||
[{architecture: 'x64'}, {arch: 'x86', hw_bitness: '64', abi: ''}],
|
[{architecture: 'x64'}, 'x64'],
|
||||||
[{architecture: 'x86'}, {arch: 'x86', hw_bitness: '32', abi: ''}],
|
[{architecture: 'x86'}, 'i686'],
|
||||||
[{architecture: 'x32'}, {arch: 'x32', hw_bitness: '', abi: ''}],
|
[{architecture: 'aarch64'}, 'aarch64'],
|
||||||
[{architecture: 'arm'}, {arch: 'arm', hw_bitness: '', abi: ''}]
|
[{architecture: 'arm64'}, 'aarch64'],
|
||||||
|
[{architecture: 'arm'}, 'arm']
|
||||||
])('%s -> %s', (input, expected) => {
|
])('%s -> %s', (input, expected) => {
|
||||||
const distribution = new ZuluDistribution({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
@@ -177,7 +195,7 @@ describe('getArchitectureOptions', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
expect(distribution['getArchitectureOptions']()).toEqual(expected);
|
expect(distribution['getArchitectureOptions']()).toBe(expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -46,8 +46,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: altHome,
|
settingsDirectory: altHome
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(false);
|
expect(fs.existsSync(m2Dir)).toBe(false);
|
||||||
@@ -95,8 +94,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -177,8 +175,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -263,8 +260,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -341,8 +337,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -412,8 +407,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -505,8 +499,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -565,8 +558,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -624,8 +616,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -708,8 +699,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -788,8 +778,7 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
@@ -814,7 +803,7 @@ describe('toolchains tests', () => {
|
|||||||
).toEqual(result);
|
).toEqual(result);
|
||||||
}, 100000);
|
}, 100000);
|
||||||
|
|
||||||
it('does not overwrite existing toolchains.xml files', async () => {
|
it('extends existing toolchains.xml files instead of overwriting them', async () => {
|
||||||
const jdkInfo = {
|
const jdkInfo = {
|
||||||
version: '17',
|
version: '17',
|
||||||
vendor: 'Eclipse Temurin',
|
vendor: 'Eclipse Temurin',
|
||||||
@@ -843,13 +832,20 @@ describe('toolchains tests', () => {
|
|||||||
|
|
||||||
await toolchains.createToolchainsSettings({
|
await toolchains.createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory: m2Dir,
|
settingsDirectory: m2Dir
|
||||||
overwriteSettings: false
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fs.existsSync(m2Dir)).toBe(true);
|
expect(fs.existsSync(m2Dir)).toBe(true);
|
||||||
expect(fs.existsSync(toolchainsFile)).toBe(true);
|
expect(fs.existsSync(toolchainsFile)).toBe(true);
|
||||||
expect(fs.readFileSync(toolchainsFile, 'utf-8')).toEqual(originalFile);
|
|
||||||
|
const updated = fs.readFileSync(toolchainsFile, 'utf-8');
|
||||||
|
// The pre-existing (Sun 1.6) toolchain must be preserved ...
|
||||||
|
expect(updated).toContain('<id>sun_1.6</id>');
|
||||||
|
expect(updated).toContain('<jdkHome>/opt/jdk/sun/1.6</jdkHome>');
|
||||||
|
// ... and the newly installed JDK must be included in the merged result.
|
||||||
|
expect(updated).toContain('<id>temurin_17</id>');
|
||||||
|
expect(updated).toContain('<vendor>Eclipse Temurin</vendor>');
|
||||||
|
expect(updated).toContain(`<jdkHome>${jdkInfo.jdkHome}</jdkHome>`);
|
||||||
}, 100000);
|
}, 100000);
|
||||||
|
|
||||||
it('generates valid toolchains.xml with minimal configuration', () => {
|
it('generates valid toolchains.xml with minimal configuration', () => {
|
||||||
@@ -914,4 +910,55 @@ describe('toolchains tests', () => {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}, 100000);
|
}, 100000);
|
||||||
|
|
||||||
|
it('preserves toolchains from previous executions across multiple setup-java runs', async () => {
|
||||||
|
// Regression test for https://github.com/actions/setup-java/issues/1099
|
||||||
|
// Running setup-java several times in the same job (e.g. multiple steps / multiple
|
||||||
|
// java-version entries) must accumulate every JDK in toolchains.xml rather
|
||||||
|
// than replacing previously registered entries.
|
||||||
|
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
|
||||||
|
if (name === 'settings-path') return m2Dir;
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
|
||||||
|
const runs = [
|
||||||
|
{
|
||||||
|
version: '8',
|
||||||
|
distributionName: 'temurin',
|
||||||
|
id: 'temurin_8',
|
||||||
|
jdkHome: '/opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/8.0.1-12/x64'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: '11',
|
||||||
|
distributionName: 'temurin',
|
||||||
|
id: 'temurin_11',
|
||||||
|
jdkHome: '/opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/11.0.1-12/x64'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: '17',
|
||||||
|
distributionName: 'temurin',
|
||||||
|
id: 'temurin_17',
|
||||||
|
jdkHome: '/opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.1-12/x64'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const run of runs) {
|
||||||
|
await toolchains.configureToolchains(
|
||||||
|
run.version,
|
||||||
|
run.distributionName,
|
||||||
|
run.jdkHome,
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(fs.existsSync(toolchainsFile)).toBe(true);
|
||||||
|
const contents = fs.readFileSync(toolchainsFile, 'utf-8');
|
||||||
|
|
||||||
|
for (const run of runs) {
|
||||||
|
expect(contents).toContain(`<id>${run.id}</id>`);
|
||||||
|
expect(contents).toContain(`<jdkHome>${run.jdkHome}</jdkHome>`);
|
||||||
|
}
|
||||||
|
// Exactly one <toolchain> entry per run – no duplicates, none dropped.
|
||||||
|
expect((contents.match(/<toolchain>/g) || []).length).toBe(runs.length);
|
||||||
|
}, 100000);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -243,6 +243,72 @@ describe('getVersionFromFileContent', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
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', () => {
|
describe('isGhes', () => {
|
||||||
|
|||||||
+8
-2
@@ -13,15 +13,19 @@ inputs:
|
|||||||
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).'
|
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
|
required: false
|
||||||
java-package:
|
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
|
required: false
|
||||||
default: 'jdk'
|
default: 'jdk'
|
||||||
architecture:
|
architecture:
|
||||||
description: "The architecture of the package (defaults to the action runner's architecture)"
|
description: "The architecture of the package (defaults to the action runner's architecture)"
|
||||||
required: false
|
required: false
|
||||||
jdkFile:
|
jdk-file:
|
||||||
description: 'Path to where the compressed JDK is located'
|
description: 'Path to where the compressed JDK is located'
|
||||||
required: false
|
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:
|
check-latest:
|
||||||
description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec'
|
description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec'
|
||||||
required: false
|
required: false
|
||||||
@@ -99,6 +103,8 @@ outputs:
|
|||||||
description: 'Path to where the java environment has been installed (same as $JAVA_HOME)'
|
description: 'Path to where the java environment has been installed (same as $JAVA_HOME)'
|
||||||
cache-hit:
|
cache-hit:
|
||||||
description: 'A boolean value to indicate an exact match was found for the primary key'
|
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:
|
runs:
|
||||||
using: 'node24'
|
using: 'node24'
|
||||||
main: 'dist/setup/index.js'
|
main: 'dist/setup/index.js'
|
||||||
|
|||||||
Vendored
+187
-15
@@ -51968,19 +51968,28 @@ const CACHE_KEY_PREFIX = 'setup-java';
|
|||||||
const supportedPackageManager = [
|
const supportedPackageManager = [
|
||||||
{
|
{
|
||||||
id: 'maven',
|
id: 'maven',
|
||||||
path: [
|
path: [(0, path_1.join)(os_1.default.homedir(), '.m2', 'repository')],
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.m2', 'repository'),
|
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.m2', 'wrapper', 'dists')
|
|
||||||
],
|
|
||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---maven
|
// 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'
|
||||||
|
],
|
||||||
|
// The Maven wrapper distribution only depends on the wrapper properties,
|
||||||
|
// which change very rarely, so it is cached separately from the local
|
||||||
|
// repository. This keeps it available across the frequent pom.xml changes
|
||||||
|
// that rotate the main cache key. See issue #1095.
|
||||||
|
additionalCaches: [
|
||||||
|
{
|
||||||
|
name: 'maven-wrapper',
|
||||||
|
path: [(0, path_1.join)(os_1.default.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
pattern: ['**/.mvn/wrapper/maven-wrapper.properties']
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'gradle',
|
id: 'gradle',
|
||||||
path: [
|
path: [(0, path_1.join)(os_1.default.homedir(), '.gradle', 'caches')],
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.gradle', 'caches'),
|
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.gradle', 'wrapper')
|
|
||||||
],
|
|
||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.gradle*',
|
'**/*.gradle*',
|
||||||
@@ -51989,6 +51998,17 @@ const supportedPackageManager = [
|
|||||||
'buildSrc/**/Dependencies.kt',
|
'buildSrc/**/Dependencies.kt',
|
||||||
'gradle/*.versions.toml',
|
'gradle/*.versions.toml',
|
||||||
'**/versions.properties'
|
'**/versions.properties'
|
||||||
|
],
|
||||||
|
// The Gradle wrapper distribution only depends on the wrapper properties,
|
||||||
|
// which change very rarely, so it is cached separately from the Gradle
|
||||||
|
// caches. This keeps it available across the frequent *.gradle* changes
|
||||||
|
// that rotate the main cache key. See issue #269.
|
||||||
|
additionalCaches: [
|
||||||
|
{
|
||||||
|
name: 'gradle-wrapper',
|
||||||
|
path: [(0, path_1.join)(os_1.default.homedir(), '.gradle', 'wrapper')],
|
||||||
|
pattern: ['**/gradle-wrapper.properties']
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -52024,6 +52044,19 @@ function findPackageManager(id) {
|
|||||||
}
|
}
|
||||||
return packageManager;
|
return packageManager;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* State keys used to carry an additional cache's restore-time information over
|
||||||
|
* to the post (save) action, scoped by the additional cache name.
|
||||||
|
*/
|
||||||
|
function additionalCachePrimaryKeyState(name) {
|
||||||
|
return `${STATE_CACHE_PRIMARY_KEY}-${name}`;
|
||||||
|
}
|
||||||
|
function additionalCacheMatchedKeyState(name) {
|
||||||
|
return `${CACHE_MATCHED_KEY}-${name}`;
|
||||||
|
}
|
||||||
|
function buildCacheKey(id, fileHash) {
|
||||||
|
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${id}-${fileHash}`;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* A function that generates a cache key to use.
|
* A function that generates a cache key to use.
|
||||||
* Format of the generated key will be "${{ platform }}-${{ id }}-${{ fileHash }}"".
|
* Format of the generated key will be "${{ platform }}-${{ id }}-${{ fileHash }}"".
|
||||||
@@ -52038,7 +52071,21 @@ function computeCacheKey(packageManager, cacheDependencyPath) {
|
|||||||
if (!fileHash) {
|
if (!fileHash) {
|
||||||
throw new Error(`No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository`);
|
throw new Error(`No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository`);
|
||||||
}
|
}
|
||||||
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${packageManager.id}-${fileHash}`;
|
return buildCacheKey(packageManager.id, fileHash);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Computes the cache key for an additional cache. Unlike {@link computeCacheKey}
|
||||||
|
* this returns undefined (instead of throwing) when no file matches the pattern,
|
||||||
|
* because additional caches are optional features that many projects do not use.
|
||||||
|
*/
|
||||||
|
function computeAdditionalCacheKey(additionalCache) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const fileHash = yield glob.hashFiles(additionalCache.pattern.join('\n'));
|
||||||
|
if (!fileHash) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return buildCacheKey(additionalCache.name, fileHash);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -52047,11 +52094,13 @@ function computeCacheKey(packageManager, cacheDependencyPath) {
|
|||||||
* @param cacheDependencyPath The path to a dependency file
|
* @param cacheDependencyPath The path to a dependency file
|
||||||
*/
|
*/
|
||||||
function restore(id, cacheDependencyPath) {
|
function restore(id, cacheDependencyPath) {
|
||||||
|
var _a;
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const packageManager = findPackageManager(id);
|
const packageManager = findPackageManager(id);
|
||||||
const primaryKey = yield computeCacheKey(packageManager, cacheDependencyPath);
|
const primaryKey = yield computeCacheKey(packageManager, cacheDependencyPath);
|
||||||
core.debug(`primary key is ${primaryKey}`);
|
core.debug(`primary key is ${primaryKey}`);
|
||||||
core.saveState(STATE_CACHE_PRIMARY_KEY, 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)
|
// 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);
|
const matchedKey = yield cache.restoreCache(packageManager.path, primaryKey);
|
||||||
if (matchedKey) {
|
if (matchedKey) {
|
||||||
@@ -52063,19 +52112,48 @@ function restore(id, cacheDependencyPath) {
|
|||||||
core.setOutput('cache-hit', false);
|
core.setOutput('cache-hit', false);
|
||||||
core.info(`${packageManager.id} cache is not found`);
|
core.info(`${packageManager.id} cache is not found`);
|
||||||
}
|
}
|
||||||
|
for (const additionalCache of (_a = packageManager.additionalCaches) !== null && _a !== void 0 ? _a : []) {
|
||||||
|
yield restoreAdditionalCache(additionalCache);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.restore = restore;
|
exports.restore = restore;
|
||||||
|
/**
|
||||||
|
* Restore an additional cache (e.g. a build-tool wrapper distribution) that is
|
||||||
|
* keyed independently of the main dependency cache so that it survives changes
|
||||||
|
* to volatile dependency files. Skips silently when the project does not use
|
||||||
|
* the corresponding feature.
|
||||||
|
*/
|
||||||
|
function restoreAdditionalCache(additionalCache) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const primaryKey = yield computeAdditionalCacheKey(additionalCache);
|
||||||
|
if (!primaryKey) {
|
||||||
|
core.debug(`No file matched [${additionalCache.pattern}] for the ${additionalCache.name} cache, skipping.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.debug(`${additionalCache.name} primary key is ${primaryKey}`);
|
||||||
|
core.saveState(additionalCachePrimaryKeyState(additionalCache.name), primaryKey);
|
||||||
|
const matchedKey = yield cache.restoreCache(additionalCache.path, primaryKey);
|
||||||
|
if (matchedKey) {
|
||||||
|
core.saveState(additionalCacheMatchedKeyState(additionalCache.name), matchedKey);
|
||||||
|
core.info(`${additionalCache.name} cache restored from key: ${matchedKey}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Save the dependency cache
|
* Save the dependency cache
|
||||||
* @param id ID of the package manager, should be "maven" or "gradle"
|
* @param id ID of the package manager, should be "maven" or "gradle"
|
||||||
*/
|
*/
|
||||||
function save(id) {
|
function save(id) {
|
||||||
|
var _a;
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const packageManager = findPackageManager(id);
|
const packageManager = findPackageManager(id);
|
||||||
const matchedKey = core.getState(CACHE_MATCHED_KEY);
|
const matchedKey = core.getState(CACHE_MATCHED_KEY);
|
||||||
// Inputs are re-evaluated before the post action, so we want the original key used for restore
|
// Inputs are re-evaluated before the post action, so we want the original key used for restore
|
||||||
const primaryKey = core.getState(STATE_CACHE_PRIMARY_KEY);
|
const primaryKey = core.getState(STATE_CACHE_PRIMARY_KEY);
|
||||||
|
for (const additionalCache of (_a = packageManager.additionalCaches) !== null && _a !== void 0 ? _a : []) {
|
||||||
|
yield saveAdditionalCache(packageManager, additionalCache);
|
||||||
|
}
|
||||||
if (!primaryKey) {
|
if (!primaryKey) {
|
||||||
core.warning('Error retrieving key from state.');
|
core.warning('Error retrieving key from state.');
|
||||||
return;
|
return;
|
||||||
@@ -52112,6 +52190,52 @@ function save(id) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.save = save;
|
exports.save = save;
|
||||||
|
/**
|
||||||
|
* Save an additional cache under its own key. Skips when no key was recorded at
|
||||||
|
* restore time (feature unused) or when the exact key was already restored.
|
||||||
|
*/
|
||||||
|
function saveAdditionalCache(packageManager, additionalCache) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const primaryKey = core.getState(additionalCachePrimaryKeyState(additionalCache.name));
|
||||||
|
const matchedKey = core.getState(additionalCacheMatchedKeyState(additionalCache.name));
|
||||||
|
if (!primaryKey) {
|
||||||
|
// The feature is not used by this project, nothing to save.
|
||||||
|
core.debug(`No primary key for the ${additionalCache.name} cache, not saving cache.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (matchedKey === primaryKey) {
|
||||||
|
core.info(`Cache hit occurred on the ${additionalCache.name} primary key ${primaryKey}, not saving cache.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const cacheId = yield cache.saveCache(additionalCache.path, primaryKey);
|
||||||
|
if (cacheId === -1) {
|
||||||
|
core.debug(`${additionalCache.name} cache was not saved for the key: ${primaryKey}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.info(`${additionalCache.name} cache saved with the key: ${primaryKey}`);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
const err = error;
|
||||||
|
if (err.name === cache.ValidationError.name) {
|
||||||
|
// The cache paths did not resolve, e.g. the wrapper distribution was
|
||||||
|
// never downloaded because a system build tool was used or the download
|
||||||
|
// failed. Optional wrapper caches must not fail the post step, so skip.
|
||||||
|
core.debug(`${additionalCache.name} cache paths do not exist, not saving cache: ${err.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (err.name === cache.ReserveCacheError.name) {
|
||||||
|
core.info(err.message);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (isProbablyGradleDaemonProblem(packageManager, err)) {
|
||||||
|
core.warning('Failed to save Gradle cache on Windows. If tar.exe reported "Permission denied", try to run Gradle with `--no-daemon` option. Refer to https://github.com/actions/cache/issues/454 for details.');
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param packageManager the specified package manager by user
|
* @param packageManager the specified package manager by user
|
||||||
* @param error the error thrown by the saveCache
|
* @param error the error thrown by the saveCache
|
||||||
@@ -52241,14 +52365,15 @@ else {
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
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_SET_DEFAULT = 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.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home';
|
||||||
exports.INPUT_JAVA_VERSION = 'java-version';
|
exports.INPUT_JAVA_VERSION = 'java-version';
|
||||||
exports.INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
exports.INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
||||||
exports.INPUT_ARCHITECTURE = 'architecture';
|
exports.INPUT_ARCHITECTURE = 'architecture';
|
||||||
exports.INPUT_JAVA_PACKAGE = 'java-package';
|
exports.INPUT_JAVA_PACKAGE = 'java-package';
|
||||||
exports.INPUT_DISTRIBUTION = 'distribution';
|
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_CHECK_LATEST = 'check-latest';
|
||||||
exports.INPUT_SET_DEFAULT = 'set-default';
|
exports.INPUT_SET_DEFAULT = 'set-default';
|
||||||
exports.INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
exports.INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
||||||
@@ -52572,7 +52697,7 @@ function isCacheFeatureAvailable() {
|
|||||||
}
|
}
|
||||||
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
||||||
function getVersionFromFileContent(content, distributionName, versionFile) {
|
function getVersionFromFileContent(content, distributionName, versionFile) {
|
||||||
var _a, _b, _c;
|
var _a, _b, _c, _d;
|
||||||
let javaVersionRegExp;
|
let javaVersionRegExp;
|
||||||
let extractedDistribution;
|
let extractedDistribution;
|
||||||
function getFileName(versionFile) {
|
function getFileName(versionFile) {
|
||||||
@@ -52580,8 +52705,10 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
}
|
}
|
||||||
const versionFileName = getFileName(versionFile);
|
const versionFileName = getFileName(versionFile);
|
||||||
if (versionFileName == '.tool-versions') {
|
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 =
|
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') {
|
else if (versionFileName == '.sdkmanrc') {
|
||||||
// Match both version and optional distribution identifier
|
// Match both version and optional distribution identifier
|
||||||
@@ -52601,6 +52728,14 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
||||||
core.debug(`Parsed distribution '${extractedDistribution}' from SDKMAN identifier '${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}'`);
|
core.debug(`Parsed version '${capturedVersion}' from file '${versionFileName}'`);
|
||||||
if (!capturedVersion) {
|
if (!capturedVersion) {
|
||||||
return null;
|
return null;
|
||||||
@@ -52617,7 +52752,7 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
||||||
// (either explicitly provided or extracted from the version file) is in the list.
|
// (either explicitly provided or extracted from the version file) is in the list.
|
||||||
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) {
|
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) {
|
||||||
const coerceVersion = (_c = semver.coerce(version)) !== null && _c !== void 0 ? _c : version;
|
const coerceVersion = (_d = semver.coerce(version)) !== null && _d !== void 0 ? _d : version;
|
||||||
version = semver.major(coerceVersion).toString();
|
version = semver.major(coerceVersion).toString();
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
@@ -52650,6 +52785,43 @@ function mapSdkmanDistribution(sdkmanDist) {
|
|||||||
}
|
}
|
||||||
return mapped;
|
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`
|
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
|
||||||
function avoidOldNotation(content) {
|
function avoidOldNotation(content) {
|
||||||
return content.startsWith('1.') ? content.substring(2) : content;
|
return content.startsWith('1.') ? content.substring(2) : content;
|
||||||
|
|||||||
Vendored
+269
-53
@@ -77833,19 +77833,28 @@ const CACHE_KEY_PREFIX = 'setup-java';
|
|||||||
const supportedPackageManager = [
|
const supportedPackageManager = [
|
||||||
{
|
{
|
||||||
id: 'maven',
|
id: 'maven',
|
||||||
path: [
|
path: [(0, path_1.join)(os_1.default.homedir(), '.m2', 'repository')],
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.m2', 'repository'),
|
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.m2', 'wrapper', 'dists')
|
|
||||||
],
|
|
||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---maven
|
// 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'
|
||||||
|
],
|
||||||
|
// The Maven wrapper distribution only depends on the wrapper properties,
|
||||||
|
// which change very rarely, so it is cached separately from the local
|
||||||
|
// repository. This keeps it available across the frequent pom.xml changes
|
||||||
|
// that rotate the main cache key. See issue #1095.
|
||||||
|
additionalCaches: [
|
||||||
|
{
|
||||||
|
name: 'maven-wrapper',
|
||||||
|
path: [(0, path_1.join)(os_1.default.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
pattern: ['**/.mvn/wrapper/maven-wrapper.properties']
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'gradle',
|
id: 'gradle',
|
||||||
path: [
|
path: [(0, path_1.join)(os_1.default.homedir(), '.gradle', 'caches')],
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.gradle', 'caches'),
|
|
||||||
(0, path_1.join)(os_1.default.homedir(), '.gradle', 'wrapper')
|
|
||||||
],
|
|
||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.gradle*',
|
'**/*.gradle*',
|
||||||
@@ -77854,6 +77863,17 @@ const supportedPackageManager = [
|
|||||||
'buildSrc/**/Dependencies.kt',
|
'buildSrc/**/Dependencies.kt',
|
||||||
'gradle/*.versions.toml',
|
'gradle/*.versions.toml',
|
||||||
'**/versions.properties'
|
'**/versions.properties'
|
||||||
|
],
|
||||||
|
// The Gradle wrapper distribution only depends on the wrapper properties,
|
||||||
|
// which change very rarely, so it is cached separately from the Gradle
|
||||||
|
// caches. This keeps it available across the frequent *.gradle* changes
|
||||||
|
// that rotate the main cache key. See issue #269.
|
||||||
|
additionalCaches: [
|
||||||
|
{
|
||||||
|
name: 'gradle-wrapper',
|
||||||
|
path: [(0, path_1.join)(os_1.default.homedir(), '.gradle', 'wrapper')],
|
||||||
|
pattern: ['**/gradle-wrapper.properties']
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -77889,6 +77909,19 @@ function findPackageManager(id) {
|
|||||||
}
|
}
|
||||||
return packageManager;
|
return packageManager;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* State keys used to carry an additional cache's restore-time information over
|
||||||
|
* to the post (save) action, scoped by the additional cache name.
|
||||||
|
*/
|
||||||
|
function additionalCachePrimaryKeyState(name) {
|
||||||
|
return `${STATE_CACHE_PRIMARY_KEY}-${name}`;
|
||||||
|
}
|
||||||
|
function additionalCacheMatchedKeyState(name) {
|
||||||
|
return `${CACHE_MATCHED_KEY}-${name}`;
|
||||||
|
}
|
||||||
|
function buildCacheKey(id, fileHash) {
|
||||||
|
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${id}-${fileHash}`;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* A function that generates a cache key to use.
|
* A function that generates a cache key to use.
|
||||||
* Format of the generated key will be "${{ platform }}-${{ id }}-${{ fileHash }}"".
|
* Format of the generated key will be "${{ platform }}-${{ id }}-${{ fileHash }}"".
|
||||||
@@ -77903,7 +77936,21 @@ function computeCacheKey(packageManager, cacheDependencyPath) {
|
|||||||
if (!fileHash) {
|
if (!fileHash) {
|
||||||
throw new Error(`No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository`);
|
throw new Error(`No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository`);
|
||||||
}
|
}
|
||||||
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${packageManager.id}-${fileHash}`;
|
return buildCacheKey(packageManager.id, fileHash);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Computes the cache key for an additional cache. Unlike {@link computeCacheKey}
|
||||||
|
* this returns undefined (instead of throwing) when no file matches the pattern,
|
||||||
|
* because additional caches are optional features that many projects do not use.
|
||||||
|
*/
|
||||||
|
function computeAdditionalCacheKey(additionalCache) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const fileHash = yield glob.hashFiles(additionalCache.pattern.join('\n'));
|
||||||
|
if (!fileHash) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return buildCacheKey(additionalCache.name, fileHash);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -77912,11 +77959,13 @@ function computeCacheKey(packageManager, cacheDependencyPath) {
|
|||||||
* @param cacheDependencyPath The path to a dependency file
|
* @param cacheDependencyPath The path to a dependency file
|
||||||
*/
|
*/
|
||||||
function restore(id, cacheDependencyPath) {
|
function restore(id, cacheDependencyPath) {
|
||||||
|
var _a;
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const packageManager = findPackageManager(id);
|
const packageManager = findPackageManager(id);
|
||||||
const primaryKey = yield computeCacheKey(packageManager, cacheDependencyPath);
|
const primaryKey = yield computeCacheKey(packageManager, cacheDependencyPath);
|
||||||
core.debug(`primary key is ${primaryKey}`);
|
core.debug(`primary key is ${primaryKey}`);
|
||||||
core.saveState(STATE_CACHE_PRIMARY_KEY, 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)
|
// 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);
|
const matchedKey = yield cache.restoreCache(packageManager.path, primaryKey);
|
||||||
if (matchedKey) {
|
if (matchedKey) {
|
||||||
@@ -77928,19 +77977,48 @@ function restore(id, cacheDependencyPath) {
|
|||||||
core.setOutput('cache-hit', false);
|
core.setOutput('cache-hit', false);
|
||||||
core.info(`${packageManager.id} cache is not found`);
|
core.info(`${packageManager.id} cache is not found`);
|
||||||
}
|
}
|
||||||
|
for (const additionalCache of (_a = packageManager.additionalCaches) !== null && _a !== void 0 ? _a : []) {
|
||||||
|
yield restoreAdditionalCache(additionalCache);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.restore = restore;
|
exports.restore = restore;
|
||||||
|
/**
|
||||||
|
* Restore an additional cache (e.g. a build-tool wrapper distribution) that is
|
||||||
|
* keyed independently of the main dependency cache so that it survives changes
|
||||||
|
* to volatile dependency files. Skips silently when the project does not use
|
||||||
|
* the corresponding feature.
|
||||||
|
*/
|
||||||
|
function restoreAdditionalCache(additionalCache) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const primaryKey = yield computeAdditionalCacheKey(additionalCache);
|
||||||
|
if (!primaryKey) {
|
||||||
|
core.debug(`No file matched [${additionalCache.pattern}] for the ${additionalCache.name} cache, skipping.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.debug(`${additionalCache.name} primary key is ${primaryKey}`);
|
||||||
|
core.saveState(additionalCachePrimaryKeyState(additionalCache.name), primaryKey);
|
||||||
|
const matchedKey = yield cache.restoreCache(additionalCache.path, primaryKey);
|
||||||
|
if (matchedKey) {
|
||||||
|
core.saveState(additionalCacheMatchedKeyState(additionalCache.name), matchedKey);
|
||||||
|
core.info(`${additionalCache.name} cache restored from key: ${matchedKey}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Save the dependency cache
|
* Save the dependency cache
|
||||||
* @param id ID of the package manager, should be "maven" or "gradle"
|
* @param id ID of the package manager, should be "maven" or "gradle"
|
||||||
*/
|
*/
|
||||||
function save(id) {
|
function save(id) {
|
||||||
|
var _a;
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const packageManager = findPackageManager(id);
|
const packageManager = findPackageManager(id);
|
||||||
const matchedKey = core.getState(CACHE_MATCHED_KEY);
|
const matchedKey = core.getState(CACHE_MATCHED_KEY);
|
||||||
// Inputs are re-evaluated before the post action, so we want the original key used for restore
|
// Inputs are re-evaluated before the post action, so we want the original key used for restore
|
||||||
const primaryKey = core.getState(STATE_CACHE_PRIMARY_KEY);
|
const primaryKey = core.getState(STATE_CACHE_PRIMARY_KEY);
|
||||||
|
for (const additionalCache of (_a = packageManager.additionalCaches) !== null && _a !== void 0 ? _a : []) {
|
||||||
|
yield saveAdditionalCache(packageManager, additionalCache);
|
||||||
|
}
|
||||||
if (!primaryKey) {
|
if (!primaryKey) {
|
||||||
core.warning('Error retrieving key from state.');
|
core.warning('Error retrieving key from state.');
|
||||||
return;
|
return;
|
||||||
@@ -77977,6 +78055,52 @@ function save(id) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.save = save;
|
exports.save = save;
|
||||||
|
/**
|
||||||
|
* Save an additional cache under its own key. Skips when no key was recorded at
|
||||||
|
* restore time (feature unused) or when the exact key was already restored.
|
||||||
|
*/
|
||||||
|
function saveAdditionalCache(packageManager, additionalCache) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const primaryKey = core.getState(additionalCachePrimaryKeyState(additionalCache.name));
|
||||||
|
const matchedKey = core.getState(additionalCacheMatchedKeyState(additionalCache.name));
|
||||||
|
if (!primaryKey) {
|
||||||
|
// The feature is not used by this project, nothing to save.
|
||||||
|
core.debug(`No primary key for the ${additionalCache.name} cache, not saving cache.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (matchedKey === primaryKey) {
|
||||||
|
core.info(`Cache hit occurred on the ${additionalCache.name} primary key ${primaryKey}, not saving cache.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const cacheId = yield cache.saveCache(additionalCache.path, primaryKey);
|
||||||
|
if (cacheId === -1) {
|
||||||
|
core.debug(`${additionalCache.name} cache was not saved for the key: ${primaryKey}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.info(`${additionalCache.name} cache saved with the key: ${primaryKey}`);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
const err = error;
|
||||||
|
if (err.name === cache.ValidationError.name) {
|
||||||
|
// The cache paths did not resolve, e.g. the wrapper distribution was
|
||||||
|
// never downloaded because a system build tool was used or the download
|
||||||
|
// failed. Optional wrapper caches must not fail the post step, so skip.
|
||||||
|
core.debug(`${additionalCache.name} cache paths do not exist, not saving cache: ${err.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (err.name === cache.ReserveCacheError.name) {
|
||||||
|
core.info(err.message);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (isProbablyGradleDaemonProblem(packageManager, err)) {
|
||||||
|
core.warning('Failed to save Gradle cache on Windows. If tar.exe reported "Permission denied", try to run Gradle with `--no-daemon` option. Refer to https://github.com/actions/cache/issues/454 for details.');
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param packageManager the specified package manager by user
|
* @param packageManager the specified package manager by user
|
||||||
* @param error the error thrown by the saveCache
|
* @param error the error thrown by the saveCache
|
||||||
@@ -78001,14 +78125,15 @@ function isProbablyGradleDaemonProblem(packageManager, error) {
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
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_SET_DEFAULT = 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.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home';
|
||||||
exports.INPUT_JAVA_VERSION = 'java-version';
|
exports.INPUT_JAVA_VERSION = 'java-version';
|
||||||
exports.INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
exports.INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
||||||
exports.INPUT_ARCHITECTURE = 'architecture';
|
exports.INPUT_ARCHITECTURE = 'architecture';
|
||||||
exports.INPUT_JAVA_PACKAGE = 'java-package';
|
exports.INPUT_JAVA_PACKAGE = 'java-package';
|
||||||
exports.INPUT_DISTRIBUTION = 'distribution';
|
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_CHECK_LATEST = 'check-latest';
|
||||||
exports.INPUT_SET_DEFAULT = 'set-default';
|
exports.INPUT_SET_DEFAULT = 'set-default';
|
||||||
exports.INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
exports.INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
||||||
@@ -81150,16 +81275,22 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
|||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const availableVersionsRaw = yield this.getAvailableVersions();
|
const availableVersionsRaw = yield this.getAvailableVersions();
|
||||||
const availableVersions = availableVersionsRaw.map(item => {
|
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 {
|
return {
|
||||||
version: (0, util_1.convertVersionToSemver)(item.jdk_version),
|
version: (0, util_1.convertVersionToSemver)(javaVersion),
|
||||||
url: item.url,
|
url: item.download_url,
|
||||||
zuluVersion: (0, util_1.convertVersionToSemver)(item.zulu_version)
|
zuluVersion: (0, util_1.convertVersionToSemver)(item.distro_version)
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
const satisfiedVersions = availableVersions
|
const satisfiedVersions = availableVersions
|
||||||
.filter(item => (0, util_1.isVersionSatisfies)(version, item.version))
|
.filter(item => (0, util_1.isVersionSatisfies)(version, item.version))
|
||||||
.sort((a, b) => {
|
.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
|
// we should sort by both fields by descending
|
||||||
return (-semver_1.default.compareBuild(a.version, b.version) ||
|
return (-semver_1.default.compareBuild(a.version, b.version) ||
|
||||||
-semver_1.default.compareBuild(a.zuluVersion, b.zuluVersion));
|
-semver_1.default.compareBuild(a.zuluVersion, b.zuluVersion));
|
||||||
@@ -81197,37 +81328,60 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
|||||||
getAvailableVersions() {
|
getAvailableVersions() {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
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 [bundleType, features] = this.packageType.split('+');
|
||||||
const platform = this.getPlatformOption();
|
const platform = this.getPlatformOption();
|
||||||
const extension = (0, util_1.getDownloadArchiveExtension)();
|
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 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';
|
const releaseStatus = this.stable ? 'ga' : 'ea';
|
||||||
if (core.isDebug()) {
|
if (core.isDebug()) {
|
||||||
console.time('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
console.time('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||||
}
|
}
|
||||||
const requestArguments = [
|
const baseRequestArguments = [
|
||||||
`os=${platform}`,
|
`os=${platform}`,
|
||||||
`ext=${extension}`,
|
`archive_type=${extension}`,
|
||||||
`bundle_type=${bundleType}`,
|
`java_package_type=${bundleType}`,
|
||||||
`javafx=${javafx}`,
|
`javafx_bundled=${javafx}`,
|
||||||
|
`crac_supported=${crac}`,
|
||||||
`arch=${arch}`,
|
`arch=${arch}`,
|
||||||
`hw_bitness=${hw_bitness}`,
|
|
||||||
`release_status=${releaseStatus}`,
|
`release_status=${releaseStatus}`,
|
||||||
abi ? `abi=${abi}` : null,
|
`availability_types=ca`
|
||||||
features ? `features=${features}` : null
|
].join('&');
|
||||||
]
|
// Need to iterate through all pages to retrieve the list of all versions.
|
||||||
.filter(Boolean)
|
// The Azul API doesn't return a total page count, so paginate until a page
|
||||||
.join('&');
|
// comes back empty (or short), guarding against a runaway loop with a cap.
|
||||||
const availableVersionsUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?${requestArguments}`;
|
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}'`);
|
core.debug(`Gathering available versions from '${availableVersionsUrl}'`);
|
||||||
const availableVersions = (_b = (yield this.http.getJson(availableVersionsUrl))
|
}
|
||||||
.result) !== null && _b !== void 0 ? _b : [];
|
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()) {
|
if (core.isDebug()) {
|
||||||
core.startGroup('Print information about available versions');
|
core.startGroup('Print information about available versions');
|
||||||
console.timeEnd('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
console.timeEnd('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||||
core.debug(`Available versions: [${availableVersions.length}]`);
|
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();
|
core.endGroup();
|
||||||
}
|
}
|
||||||
return availableVersions;
|
return availableVersions;
|
||||||
@@ -81237,14 +81391,18 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
|||||||
const arch = this.distributionArchitecture();
|
const arch = this.distributionArchitecture();
|
||||||
switch (arch) {
|
switch (arch) {
|
||||||
case 'x64':
|
case 'x64':
|
||||||
return { arch: 'x86', hw_bitness: '64', abi: '' };
|
return 'x64';
|
||||||
case 'x86':
|
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 'aarch64':
|
||||||
case 'arm64':
|
case 'arm64':
|
||||||
return { arch: 'arm', hw_bitness: '64', abi: '' };
|
return 'aarch64';
|
||||||
default:
|
default:
|
||||||
return { arch: arch, hw_bitness: '', abi: '' };
|
return arch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getPlatformOption() {
|
getPlatformOption() {
|
||||||
@@ -81254,6 +81412,10 @@ class ZuluDistribution extends base_installer_1.JavaBase {
|
|||||||
return 'macos';
|
return 'macos';
|
||||||
case 'win32':
|
case 'win32':
|
||||||
return 'windows';
|
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:
|
default:
|
||||||
return process.platform;
|
return process.platform;
|
||||||
}
|
}
|
||||||
@@ -81546,7 +81708,7 @@ function run() {
|
|||||||
const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE);
|
const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE);
|
||||||
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
|
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
|
||||||
const packageType = core.getInput(constants.INPUT_JAVA_PACKAGE);
|
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 cache = core.getInput(constants.INPUT_CACHE);
|
||||||
const cacheDependencyPath = core.getInput(constants.INPUT_CACHE_DEPENDENCY_PATH);
|
const cacheDependencyPath = core.getInput(constants.INPUT_CACHE_DEPENDENCY_PATH);
|
||||||
const checkLatest = (0, util_1.getBooleanInput)(constants.INPUT_CHECK_LATEST, false);
|
const checkLatest = (0, util_1.getBooleanInput)(constants.INPUT_CHECK_LATEST, false);
|
||||||
@@ -81625,6 +81787,14 @@ function run() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
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) {
|
function installVersion(version, options, toolchainId = 0) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const { distributionName, jdkFile, architecture, packageType, checkLatest, setDefault, verifySignature, verifySignaturePublicKey, toolchainIds } = options;
|
const { distributionName, jdkFile, architecture, packageType, checkLatest, setDefault, verifySignature, verifySignaturePublicKey, toolchainIds } = options;
|
||||||
@@ -81700,7 +81870,6 @@ const path = __importStar(__nccwpck_require__(16928));
|
|||||||
const core = __importStar(__nccwpck_require__(37484));
|
const core = __importStar(__nccwpck_require__(37484));
|
||||||
const io = __importStar(__nccwpck_require__(94994));
|
const io = __importStar(__nccwpck_require__(94994));
|
||||||
const constants = __importStar(__nccwpck_require__(27242));
|
const constants = __importStar(__nccwpck_require__(27242));
|
||||||
const util_1 = __nccwpck_require__(54527);
|
|
||||||
const xmlbuilder2_1 = __nccwpck_require__(54697);
|
const xmlbuilder2_1 = __nccwpck_require__(54697);
|
||||||
function configureToolchains(version, distributionName, jdkHome, toolchainId) {
|
function configureToolchains(version, distributionName, jdkHome, toolchainId) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
@@ -81708,7 +81877,6 @@ function configureToolchains(version, distributionName, jdkHome, toolchainId) {
|
|||||||
const id = toolchainId || `${vendor}_${version}`;
|
const id = toolchainId || `${vendor}_${version}`;
|
||||||
const settingsDirectory = core.getInput(constants.INPUT_SETTINGS_PATH) ||
|
const settingsDirectory = core.getInput(constants.INPUT_SETTINGS_PATH) ||
|
||||||
path.join(os.homedir(), constants.M2_DIR);
|
path.join(os.homedir(), constants.M2_DIR);
|
||||||
const overwriteSettings = (0, util_1.getBooleanInput)(constants.INPUT_OVERWRITE_SETTINGS, true);
|
|
||||||
yield createToolchainsSettings({
|
yield createToolchainsSettings({
|
||||||
jdkInfo: {
|
jdkInfo: {
|
||||||
version,
|
version,
|
||||||
@@ -81716,13 +81884,12 @@ function configureToolchains(version, distributionName, jdkHome, toolchainId) {
|
|||||||
id,
|
id,
|
||||||
jdkHome
|
jdkHome
|
||||||
},
|
},
|
||||||
settingsDirectory,
|
settingsDirectory
|
||||||
overwriteSettings
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.configureToolchains = configureToolchains;
|
exports.configureToolchains = configureToolchains;
|
||||||
function createToolchainsSettings({ jdkInfo, settingsDirectory, overwriteSettings }) {
|
function createToolchainsSettings({ jdkInfo, settingsDirectory }) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
core.info(`Creating ${constants.MVN_TOOLCHAINS_FILE} for JDK version ${jdkInfo.version} from ${jdkInfo.vendor}`);
|
core.info(`Creating ${constants.MVN_TOOLCHAINS_FILE} for JDK version ${jdkInfo.version} from ${jdkInfo.vendor}`);
|
||||||
// when an alternate m2 location is specified use only that location (no .m2 directory)
|
// when an alternate m2 location is specified use only that location (no .m2 directory)
|
||||||
@@ -81730,7 +81897,7 @@ function createToolchainsSettings({ jdkInfo, settingsDirectory, overwriteSetting
|
|||||||
yield io.mkdirP(settingsDirectory);
|
yield io.mkdirP(settingsDirectory);
|
||||||
const originalToolchains = yield readExistingToolchainsFile(settingsDirectory);
|
const originalToolchains = yield readExistingToolchainsFile(settingsDirectory);
|
||||||
const updatedToolchains = generateToolchainDefinition(originalToolchains, jdkInfo.version, jdkInfo.vendor, jdkInfo.id, jdkInfo.jdkHome);
|
const updatedToolchains = generateToolchainDefinition(originalToolchains, jdkInfo.version, jdkInfo.vendor, jdkInfo.id, jdkInfo.jdkHome);
|
||||||
yield writeToolchainsFileToDisk(settingsDirectory, updatedToolchains, overwriteSettings);
|
yield writeToolchainsFileToDisk(settingsDirectory, updatedToolchains);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.createToolchainsSettings = createToolchainsSettings;
|
exports.createToolchainsSettings = createToolchainsSettings;
|
||||||
@@ -81816,19 +81983,21 @@ function readExistingToolchainsFile(directory) {
|
|||||||
return '';
|
return '';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function writeToolchainsFileToDisk(directory, settings, overwriteSettings) {
|
function writeToolchainsFileToDisk(directory, settings) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const location = path.join(directory, constants.MVN_TOOLCHAINS_FILE);
|
const location = path.join(directory, constants.MVN_TOOLCHAINS_FILE);
|
||||||
const settingsExists = fs.existsSync(location);
|
const settingsExists = fs.existsSync(location);
|
||||||
if (settingsExists && overwriteSettings) {
|
// The toolchains file is produced by a non-destructive merge (existing JDK,
|
||||||
core.info(`Overwriting existing file ${location}`);
|
// custom, and non-jdk toolchains are preserved – see generateToolchainDefinition),
|
||||||
}
|
// so it is always safe to write it. Unlike settings.xml, it is therefore not
|
||||||
else if (!settingsExists) {
|
// gated behind the `overwrite-settings` input; that would prevent subsequent
|
||||||
core.info(`Writing to ${location}`);
|
// setup-java runs from registering additional JDKs and silently drop the
|
||||||
|
// toolchain entries created by earlier runs.
|
||||||
|
if (settingsExists) {
|
||||||
|
core.info(`Updating existing file ${location}`);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
core.info(`Skipping generation of ${location} because file already exists and overwriting is not enabled`);
|
core.info(`Writing to ${location}`);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
return fs.writeFileSync(location, settings, {
|
return fs.writeFileSync(location, settings, {
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
@@ -81990,7 +82159,7 @@ function isCacheFeatureAvailable() {
|
|||||||
}
|
}
|
||||||
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
||||||
function getVersionFromFileContent(content, distributionName, versionFile) {
|
function getVersionFromFileContent(content, distributionName, versionFile) {
|
||||||
var _a, _b, _c;
|
var _a, _b, _c, _d;
|
||||||
let javaVersionRegExp;
|
let javaVersionRegExp;
|
||||||
let extractedDistribution;
|
let extractedDistribution;
|
||||||
function getFileName(versionFile) {
|
function getFileName(versionFile) {
|
||||||
@@ -81998,8 +82167,10 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
}
|
}
|
||||||
const versionFileName = getFileName(versionFile);
|
const versionFileName = getFileName(versionFile);
|
||||||
if (versionFileName == '.tool-versions') {
|
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 =
|
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') {
|
else if (versionFileName == '.sdkmanrc') {
|
||||||
// Match both version and optional distribution identifier
|
// Match both version and optional distribution identifier
|
||||||
@@ -82019,6 +82190,14 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
extractedDistribution = mapSdkmanDistribution(sdkmanDist);
|
||||||
core.debug(`Parsed distribution '${extractedDistribution}' from SDKMAN identifier '${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}'`);
|
core.debug(`Parsed version '${capturedVersion}' from file '${versionFileName}'`);
|
||||||
if (!capturedVersion) {
|
if (!capturedVersion) {
|
||||||
return null;
|
return null;
|
||||||
@@ -82035,7 +82214,7 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
// Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution
|
||||||
// (either explicitly provided or extracted from the version file) is in the list.
|
// (either explicitly provided or extracted from the version file) is in the list.
|
||||||
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) {
|
if (constants_1.DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) {
|
||||||
const coerceVersion = (_c = semver.coerce(version)) !== null && _c !== void 0 ? _c : version;
|
const coerceVersion = (_d = semver.coerce(version)) !== null && _d !== void 0 ? _d : version;
|
||||||
version = semver.major(coerceVersion).toString();
|
version = semver.major(coerceVersion).toString();
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
@@ -82068,6 +82247,43 @@ function mapSdkmanDistribution(sdkmanDist) {
|
|||||||
}
|
}
|
||||||
return mapped;
|
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`
|
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
|
||||||
function avoidOldNotation(content) {
|
function avoidOldNotation(content) {
|
||||||
return content.startsWith('1.') ? content.substring(2) : content;
|
return content.startsWith('1.') ? content.substring(2) : content;
|
||||||
|
|||||||
+56
-21
@@ -41,7 +41,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -66,8 +66,8 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'zulu'
|
distribution: 'zulu'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
java-package: jdk # optional (jdk, jre, jdk+fx or jre+fx) - defaults to jdk
|
java-package: jdk # optional (jdk, jre, jdk+fx, jre+fx, jdk+crac, or jre+crac) - defaults to jdk
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'liberica'
|
distribution: 'liberica'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
java-package: jdk # optional (jdk, jre, jdk+fx or jre+fx) - defaults to jdk
|
java-package: jdk # optional (jdk, jre, jdk+fx or jre+fx) - defaults to jdk
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
@@ -92,7 +92,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'microsoft'
|
distribution: 'microsoft'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ uses: actions/setup-java@v5
|
|||||||
with:
|
with:
|
||||||
token: ${{ secrets.GH_DOTCOM_TOKEN }}
|
token: ${{ secrets.GH_DOTCOM_TOKEN }}
|
||||||
distribution: 'microsoft'
|
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.
|
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.
|
||||||
@@ -121,7 +121,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'corretto'
|
distribution: 'corretto'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'oracle'
|
distribution: 'oracle'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'sapmachine'
|
distribution: 'sapmachine'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'graalvm'
|
distribution: 'graalvm'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
- run: |
|
- run: |
|
||||||
java --version
|
java --version
|
||||||
native-image --version
|
native-image --version
|
||||||
@@ -237,7 +237,7 @@ The available package types are:
|
|||||||
- `jre+ft` - JBR (FreeType)
|
- `jre+ft` - JBR (FreeType)
|
||||||
|
|
||||||
### Tencent Kona
|
### Tencent Kona
|
||||||
**NOTE:** Tencent Kona supports major versions 8, 11, 17 and 21, and provides jdk only.
|
**NOTE:** Tencent Kona supports major versions 8, 11, 17, 21 and 25, and provides jdk only.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
@@ -256,7 +256,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: '<distribution>'
|
distribution: '<distribution>'
|
||||||
java-version: '11'
|
java-version: '25'
|
||||||
java-package: jdk # optional (jdk or jre) - defaults to jdk
|
java-package: jdk # optional (jdk or jre) - defaults to jdk
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
@@ -271,7 +271,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'zulu'
|
distribution: 'zulu'
|
||||||
java-version: '21'
|
java-version: '25'
|
||||||
java-package: jdk+fx
|
java-package: jdk+fx
|
||||||
cache: maven
|
cache: maven
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
@@ -293,7 +293,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: '<distribution>'
|
distribution: '<distribution>'
|
||||||
java-version: '11'
|
java-version: '25'
|
||||||
architecture: x86 # optional - default value derived from the runner machine
|
architecture: x86 # optional - default value derived from the runner machine
|
||||||
- run: java --version
|
- run: java --version
|
||||||
```
|
```
|
||||||
@@ -330,7 +330,7 @@ In this example, `JAVA_HOME` and `java` on `PATH` point to Java 17, while Java 2
|
|||||||
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:
|
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]
|
> [!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
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
@@ -340,7 +340,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||||
java-version: '11.0.0'
|
java-version: '11.0.0'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
|
|
||||||
@@ -357,7 +357,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||||
java-version: '25.0.0-ea.36'
|
java-version: '25.0.0-ea.36'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
|
|
||||||
@@ -383,7 +383,7 @@ If your use-case requires a custom distribution (in the example, alpine-linux is
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
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 }}
|
java-version: {{ steps.fetch_latest_jdk.outputs.java_version }}
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- run: java --version
|
- run: java --version
|
||||||
@@ -684,6 +684,8 @@ The `setup-java` action generates a basic [Maven Toolchains declaration](https:/
|
|||||||
### Installing Multiple JDKs With Toolchains
|
### Installing Multiple JDKs With Toolchains
|
||||||
Subsequent calls to `setup-java` with distinct distribution and version parameters will continue to extend the toolchains declaration and make all specified Java versions available.
|
Subsequent calls to `setup-java` with distinct distribution and version parameters will continue to extend the toolchains declaration and make all specified Java versions available.
|
||||||
|
|
||||||
|
Toolchain entries are always merged non-destructively: existing JDK, custom, and user-managed toolchains are preserved, and only an entry with the exact same `type` and `provides.id` is replaced. This behavior is independent of the `overwrite-settings` input, which only controls regeneration of `settings.xml`. As a result, running `setup-java` several times in the same job (for example in multiple steps or with multiple `java-version` values) accumulates every JDK in `toolchains.xml` instead of dropping previously registered entries.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
@@ -708,7 +710,7 @@ The result is a Toolchain with entries for JDKs 8, 11 and 15. You can even combi
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||||
java-version: '1.6'
|
java-version: '1.6'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
```
|
```
|
||||||
@@ -725,7 +727,7 @@ Each JDK provider will receive a default `vendor` using the `distribution` input
|
|||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'jdkfile'
|
distribution: 'jdkfile'
|
||||||
jdkFile: ${{ runner.temp }}/java_package.tar.gz
|
jdk-file: ${{ runner.temp }}/java_package.tar.gz
|
||||||
java-version: '1.6'
|
java-version: '1.6'
|
||||||
architecture: x64
|
architecture: x64
|
||||||
mvn-toolchain-vendor: 'Oracle'
|
mvn-toolchain-vendor: 'Oracle'
|
||||||
@@ -780,7 +782,27 @@ steps:
|
|||||||
|
|
||||||
Supported files are `.java-version`, `.tool-versions` and `.sdkmanrc`.
|
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 `.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 `.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.
|
* 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:
|
Supported SDKMAN suffix mappings:
|
||||||
@@ -816,6 +838,19 @@ steps:
|
|||||||
java=17.0.7-tem
|
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`):
|
Valid entry options (does not apply to `.sdkmanrc`):
|
||||||
```
|
```
|
||||||
major versions: 8, 11, 16, 17, 21
|
major versions: 8, 11, 16, 17, 21
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-java",
|
"name": "setup-java",
|
||||||
"version": "5.3.0",
|
"version": "5.6.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "setup-java",
|
"name": "setup-java",
|
||||||
"version": "5.3.0",
|
"version": "5.6.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^5.1.0",
|
"@actions/cache": "^5.1.0",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-java",
|
"name": "setup-java",
|
||||||
"version": "5.3.0",
|
"version": "5.6.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "setup java action",
|
"description": "setup java action",
|
||||||
"main": "dist/setup/index.js",
|
"main": "dist/setup/index.js",
|
||||||
|
|||||||
+191
-10
@@ -12,6 +12,30 @@ const STATE_CACHE_PRIMARY_KEY = 'cache-primary-key';
|
|||||||
const CACHE_MATCHED_KEY = 'cache-matched-key';
|
const CACHE_MATCHED_KEY = 'cache-matched-key';
|
||||||
const CACHE_KEY_PREFIX = 'setup-java';
|
const CACHE_KEY_PREFIX = 'setup-java';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An additional cache entry that is restored and saved independently of the
|
||||||
|
* main dependency cache. Used for build-tool wrapper distributions that rarely
|
||||||
|
* change (e.g. the Maven wrapper distribution) so that they are not evicted
|
||||||
|
* every time a volatile dependency file such as pom.xml changes. See
|
||||||
|
* https://github.com/actions/setup-java/issues/1095.
|
||||||
|
*/
|
||||||
|
interface AdditionalCache {
|
||||||
|
/**
|
||||||
|
* Short identifier for the cache, used to build its cache key and to scope
|
||||||
|
* the state keys that carry information from restore to save.
|
||||||
|
*/
|
||||||
|
name: string;
|
||||||
|
/**
|
||||||
|
* Paths that make up this cache entry.
|
||||||
|
*/
|
||||||
|
path: string[];
|
||||||
|
/**
|
||||||
|
* Glob patterns whose hash forms the cache key. If no file matches, the
|
||||||
|
* cache is skipped silently (the project simply does not use this feature).
|
||||||
|
*/
|
||||||
|
pattern: string[];
|
||||||
|
}
|
||||||
|
|
||||||
interface PackageManager {
|
interface PackageManager {
|
||||||
id: 'maven' | 'gradle' | 'sbt';
|
id: 'maven' | 'gradle' | 'sbt';
|
||||||
/**
|
/**
|
||||||
@@ -19,23 +43,36 @@ interface PackageManager {
|
|||||||
*/
|
*/
|
||||||
path: string[];
|
path: string[];
|
||||||
pattern: string[];
|
pattern: string[];
|
||||||
|
/**
|
||||||
|
* Additional caches keyed independently of the main dependency cache.
|
||||||
|
*/
|
||||||
|
additionalCaches?: AdditionalCache[];
|
||||||
}
|
}
|
||||||
const supportedPackageManager: PackageManager[] = [
|
const supportedPackageManager: PackageManager[] = [
|
||||||
{
|
{
|
||||||
id: 'maven',
|
id: 'maven',
|
||||||
path: [
|
path: [join(os.homedir(), '.m2', 'repository')],
|
||||||
join(os.homedir(), '.m2', 'repository'),
|
|
||||||
join(os.homedir(), '.m2', 'wrapper', 'dists')
|
|
||||||
],
|
|
||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---maven
|
// 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'
|
||||||
|
],
|
||||||
|
// The Maven wrapper distribution only depends on the wrapper properties,
|
||||||
|
// which change very rarely, so it is cached separately from the local
|
||||||
|
// repository. This keeps it available across the frequent pom.xml changes
|
||||||
|
// that rotate the main cache key. See issue #1095.
|
||||||
|
additionalCaches: [
|
||||||
|
{
|
||||||
|
name: 'maven-wrapper',
|
||||||
|
path: [join(os.homedir(), '.m2', 'wrapper', 'dists')],
|
||||||
|
pattern: ['**/.mvn/wrapper/maven-wrapper.properties']
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'gradle',
|
id: 'gradle',
|
||||||
path: [
|
path: [join(os.homedir(), '.gradle', 'caches')],
|
||||||
join(os.homedir(), '.gradle', 'caches'),
|
|
||||||
join(os.homedir(), '.gradle', 'wrapper')
|
|
||||||
],
|
|
||||||
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
// https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
|
||||||
pattern: [
|
pattern: [
|
||||||
'**/*.gradle*',
|
'**/*.gradle*',
|
||||||
@@ -44,6 +81,17 @@ const supportedPackageManager: PackageManager[] = [
|
|||||||
'buildSrc/**/Dependencies.kt',
|
'buildSrc/**/Dependencies.kt',
|
||||||
'gradle/*.versions.toml',
|
'gradle/*.versions.toml',
|
||||||
'**/versions.properties'
|
'**/versions.properties'
|
||||||
|
],
|
||||||
|
// The Gradle wrapper distribution only depends on the wrapper properties,
|
||||||
|
// which change very rarely, so it is cached separately from the Gradle
|
||||||
|
// caches. This keeps it available across the frequent *.gradle* changes
|
||||||
|
// that rotate the main cache key. See issue #269.
|
||||||
|
additionalCaches: [
|
||||||
|
{
|
||||||
|
name: 'gradle-wrapper',
|
||||||
|
path: [join(os.homedir(), '.gradle', 'wrapper')],
|
||||||
|
pattern: ['**/gradle-wrapper.properties']
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -83,6 +131,21 @@ function findPackageManager(id: string): PackageManager {
|
|||||||
return packageManager;
|
return packageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* State keys used to carry an additional cache's restore-time information over
|
||||||
|
* to the post (save) action, scoped by the additional cache name.
|
||||||
|
*/
|
||||||
|
function additionalCachePrimaryKeyState(name: string): string {
|
||||||
|
return `${STATE_CACHE_PRIMARY_KEY}-${name}`;
|
||||||
|
}
|
||||||
|
function additionalCacheMatchedKeyState(name: string): string {
|
||||||
|
return `${CACHE_MATCHED_KEY}-${name}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildCacheKey(id: string, fileHash: string): string {
|
||||||
|
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${id}-${fileHash}`;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A function that generates a cache key to use.
|
* A function that generates a cache key to use.
|
||||||
* Format of the generated key will be "${{ platform }}-${{ id }}-${{ fileHash }}"".
|
* Format of the generated key will be "${{ platform }}-${{ id }}-${{ fileHash }}"".
|
||||||
@@ -101,7 +164,22 @@ async function computeCacheKey(
|
|||||||
`No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository`
|
`No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${packageManager.id}-${fileHash}`;
|
return buildCacheKey(packageManager.id, fileHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Computes the cache key for an additional cache. Unlike {@link computeCacheKey}
|
||||||
|
* this returns undefined (instead of throwing) when no file matches the pattern,
|
||||||
|
* because additional caches are optional features that many projects do not use.
|
||||||
|
*/
|
||||||
|
async function computeAdditionalCacheKey(
|
||||||
|
additionalCache: AdditionalCache
|
||||||
|
): Promise<string | undefined> {
|
||||||
|
const fileHash = await glob.hashFiles(additionalCache.pattern.join('\n'));
|
||||||
|
if (!fileHash) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return buildCacheKey(additionalCache.name, fileHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -114,6 +192,7 @@ export async function restore(id: string, cacheDependencyPath: string) {
|
|||||||
const primaryKey = await computeCacheKey(packageManager, cacheDependencyPath);
|
const primaryKey = await computeCacheKey(packageManager, cacheDependencyPath);
|
||||||
core.debug(`primary key is ${primaryKey}`);
|
core.debug(`primary key is ${primaryKey}`);
|
||||||
core.saveState(STATE_CACHE_PRIMARY_KEY, 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)
|
// 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);
|
const matchedKey = await cache.restoreCache(packageManager.path, primaryKey);
|
||||||
@@ -125,6 +204,40 @@ export async function restore(id: string, cacheDependencyPath: string) {
|
|||||||
core.setOutput('cache-hit', false);
|
core.setOutput('cache-hit', false);
|
||||||
core.info(`${packageManager.id} cache is not found`);
|
core.info(`${packageManager.id} cache is not found`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const additionalCache of packageManager.additionalCaches ?? []) {
|
||||||
|
await restoreAdditionalCache(additionalCache);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restore an additional cache (e.g. a build-tool wrapper distribution) that is
|
||||||
|
* keyed independently of the main dependency cache so that it survives changes
|
||||||
|
* to volatile dependency files. Skips silently when the project does not use
|
||||||
|
* the corresponding feature.
|
||||||
|
*/
|
||||||
|
async function restoreAdditionalCache(additionalCache: AdditionalCache) {
|
||||||
|
const primaryKey = await computeAdditionalCacheKey(additionalCache);
|
||||||
|
if (!primaryKey) {
|
||||||
|
core.debug(
|
||||||
|
`No file matched [${additionalCache.pattern}] for the ${additionalCache.name} cache, skipping.`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.debug(`${additionalCache.name} primary key is ${primaryKey}`);
|
||||||
|
core.saveState(
|
||||||
|
additionalCachePrimaryKeyState(additionalCache.name),
|
||||||
|
primaryKey
|
||||||
|
);
|
||||||
|
|
||||||
|
const matchedKey = await cache.restoreCache(additionalCache.path, primaryKey);
|
||||||
|
if (matchedKey) {
|
||||||
|
core.saveState(
|
||||||
|
additionalCacheMatchedKeyState(additionalCache.name),
|
||||||
|
matchedKey
|
||||||
|
);
|
||||||
|
core.info(`${additionalCache.name} cache restored from key: ${matchedKey}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -138,6 +251,10 @@ export async function save(id: string) {
|
|||||||
// Inputs are re-evaluated before the post action, so we want the original key used for restore
|
// Inputs are re-evaluated before the post action, so we want the original key used for restore
|
||||||
const primaryKey = core.getState(STATE_CACHE_PRIMARY_KEY);
|
const primaryKey = core.getState(STATE_CACHE_PRIMARY_KEY);
|
||||||
|
|
||||||
|
for (const additionalCache of packageManager.additionalCaches ?? []) {
|
||||||
|
await saveAdditionalCache(packageManager, additionalCache);
|
||||||
|
}
|
||||||
|
|
||||||
if (!primaryKey) {
|
if (!primaryKey) {
|
||||||
core.warning('Error retrieving key from state.');
|
core.warning('Error retrieving key from state.');
|
||||||
return;
|
return;
|
||||||
@@ -175,6 +292,70 @@ export async function save(id: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save an additional cache under its own key. Skips when no key was recorded at
|
||||||
|
* restore time (feature unused) or when the exact key was already restored.
|
||||||
|
*/
|
||||||
|
async function saveAdditionalCache(
|
||||||
|
packageManager: PackageManager,
|
||||||
|
additionalCache: AdditionalCache
|
||||||
|
) {
|
||||||
|
const primaryKey = core.getState(
|
||||||
|
additionalCachePrimaryKeyState(additionalCache.name)
|
||||||
|
);
|
||||||
|
const matchedKey = core.getState(
|
||||||
|
additionalCacheMatchedKeyState(additionalCache.name)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!primaryKey) {
|
||||||
|
// The feature is not used by this project, nothing to save.
|
||||||
|
core.debug(
|
||||||
|
`No primary key for the ${additionalCache.name} cache, not saving cache.`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
} else if (matchedKey === primaryKey) {
|
||||||
|
core.info(
|
||||||
|
`Cache hit occurred on the ${additionalCache.name} primary key ${primaryKey}, not saving cache.`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const cacheId = await cache.saveCache(additionalCache.path, primaryKey);
|
||||||
|
if (cacheId === -1) {
|
||||||
|
core.debug(
|
||||||
|
`${additionalCache.name} cache was not saved for the key: ${primaryKey}`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.info(
|
||||||
|
`${additionalCache.name} cache saved with the key: ${primaryKey}`
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
const err = error as Error;
|
||||||
|
|
||||||
|
if (err.name === cache.ValidationError.name) {
|
||||||
|
// The cache paths did not resolve, e.g. the wrapper distribution was
|
||||||
|
// never downloaded because a system build tool was used or the download
|
||||||
|
// failed. Optional wrapper caches must not fail the post step, so skip.
|
||||||
|
core.debug(
|
||||||
|
`${additionalCache.name} cache paths do not exist, not saving cache: ${err.message}`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err.name === cache.ReserveCacheError.name) {
|
||||||
|
core.info(err.message);
|
||||||
|
} else {
|
||||||
|
if (isProbablyGradleDaemonProblem(packageManager, err)) {
|
||||||
|
core.warning(
|
||||||
|
'Failed to save Gradle cache on Windows. If tar.exe reported "Permission denied", try to run Gradle with `--no-daemon` option. Refer to https://github.com/actions/cache/issues/454 for details.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param packageManager the specified package manager by user
|
* @param packageManager the specified package manager by user
|
||||||
* @param error the error thrown by the saveCache
|
* @param error the error thrown by the saveCache
|
||||||
|
|||||||
+2
-1
@@ -4,7 +4,8 @@ export const INPUT_JAVA_VERSION_FILE = 'java-version-file';
|
|||||||
export const INPUT_ARCHITECTURE = 'architecture';
|
export const INPUT_ARCHITECTURE = 'architecture';
|
||||||
export const INPUT_JAVA_PACKAGE = 'java-package';
|
export const INPUT_JAVA_PACKAGE = 'java-package';
|
||||||
export const INPUT_DISTRIBUTION = 'distribution';
|
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_CHECK_LATEST = 'check-latest';
|
||||||
export const INPUT_SET_DEFAULT = 'set-default';
|
export const INPUT_SET_DEFAULT = 'set-default';
|
||||||
export const INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
export const INPUT_VERIFY_SIGNATURE = 'verify-signature';
|
||||||
|
|||||||
@@ -30,17 +30,24 @@ export class ZuluDistribution extends JavaBase {
|
|||||||
): Promise<JavaDownloadRelease> {
|
): Promise<JavaDownloadRelease> {
|
||||||
const availableVersionsRaw = await this.getAvailableVersions();
|
const availableVersionsRaw = await this.getAvailableVersions();
|
||||||
const availableVersions = availableVersionsRaw.map(item => {
|
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 {
|
return {
|
||||||
version: convertVersionToSemver(item.jdk_version),
|
version: convertVersionToSemver(javaVersion),
|
||||||
url: item.url,
|
url: item.download_url,
|
||||||
zuluVersion: convertVersionToSemver(item.zulu_version)
|
zuluVersion: convertVersionToSemver(item.distro_version)
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const satisfiedVersions = availableVersions
|
const satisfiedVersions = availableVersions
|
||||||
.filter(item => isVersionSatisfies(version, item.version))
|
.filter(item => isVersionSatisfies(version, item.version))
|
||||||
.sort((a, b) => {
|
.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
|
// we should sort by both fields by descending
|
||||||
return (
|
return (
|
||||||
-semver.compareBuild(a.version, b.version) ||
|
-semver.compareBuild(a.version, b.version) ||
|
||||||
@@ -95,45 +102,76 @@ export class ZuluDistribution extends JavaBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async getAvailableVersions(): Promise<IZuluVersions[]> {
|
private async getAvailableVersions(): Promise<IZuluVersions[]> {
|
||||||
const {arch, hw_bitness, abi} = this.getArchitectureOptions();
|
const arch = this.getArchitectureOptions();
|
||||||
const [bundleType, features] = this.packageType.split('+');
|
const [bundleType, features] = this.packageType.split('+');
|
||||||
const platform = this.getPlatformOption();
|
const platform = this.getPlatformOption();
|
||||||
const extension = getDownloadArchiveExtension();
|
const extension = getDownloadArchiveExtension();
|
||||||
const javafx = features?.includes('fx') ?? false;
|
const javafx = features?.includes('fx') ?? false;
|
||||||
|
const crac = features?.includes('crac') ?? false;
|
||||||
const releaseStatus = this.stable ? 'ga' : 'ea';
|
const releaseStatus = this.stable ? 'ga' : 'ea';
|
||||||
|
|
||||||
if (core.isDebug()) {
|
if (core.isDebug()) {
|
||||||
console.time('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
console.time('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||||
}
|
}
|
||||||
|
|
||||||
const requestArguments = [
|
const baseRequestArguments = [
|
||||||
`os=${platform}`,
|
`os=${platform}`,
|
||||||
`ext=${extension}`,
|
`archive_type=${extension}`,
|
||||||
`bundle_type=${bundleType}`,
|
`java_package_type=${bundleType}`,
|
||||||
`javafx=${javafx}`,
|
`javafx_bundled=${javafx}`,
|
||||||
|
`crac_supported=${crac}`,
|
||||||
`arch=${arch}`,
|
`arch=${arch}`,
|
||||||
`hw_bitness=${hw_bitness}`,
|
|
||||||
`release_status=${releaseStatus}`,
|
`release_status=${releaseStatus}`,
|
||||||
abi ? `abi=${abi}` : null,
|
`availability_types=ca`
|
||||||
features ? `features=${features}` : null
|
].join('&');
|
||||||
]
|
|
||||||
.filter(Boolean)
|
|
||||||
.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 =
|
availableVersions.push(...paginationPage);
|
||||||
(await this.http.getJson<Array<IZuluVersions>>(availableVersionsUrl))
|
|
||||||
.result ?? [];
|
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()) {
|
if (core.isDebug()) {
|
||||||
core.startGroup('Print information about available versions');
|
core.startGroup('Print information about available versions');
|
||||||
console.timeEnd('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
console.timeEnd('Retrieving available versions for Zulu took'); // eslint-disable-line no-console
|
||||||
core.debug(`Available versions: [${availableVersions.length}]`);
|
core.debug(`Available versions: [${availableVersions.length}]`);
|
||||||
core.debug(
|
core.debug(
|
||||||
availableVersions.map(item => item.jdk_version.join('.')).join(', ')
|
availableVersions.map(item => item.java_version.join('.')).join(', ')
|
||||||
);
|
);
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
}
|
}
|
||||||
@@ -141,22 +179,22 @@ export class ZuluDistribution extends JavaBase {
|
|||||||
return availableVersions;
|
return availableVersions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getArchitectureOptions(): {
|
private getArchitectureOptions(): string {
|
||||||
arch: string;
|
|
||||||
hw_bitness: string;
|
|
||||||
abi: string;
|
|
||||||
} {
|
|
||||||
const arch = this.distributionArchitecture();
|
const arch = this.distributionArchitecture();
|
||||||
switch (arch) {
|
switch (arch) {
|
||||||
case 'x64':
|
case 'x64':
|
||||||
return {arch: 'x86', hw_bitness: '64', abi: ''};
|
return 'x64';
|
||||||
case 'x86':
|
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 'aarch64':
|
||||||
case 'arm64':
|
case 'arm64':
|
||||||
return {arch: 'arm', hw_bitness: '64', abi: ''};
|
return 'aarch64';
|
||||||
default:
|
default:
|
||||||
return {arch: arch, hw_bitness: '', abi: ''};
|
return arch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,6 +205,10 @@ export class ZuluDistribution extends JavaBase {
|
|||||||
return 'macos';
|
return 'macos';
|
||||||
case 'win32':
|
case 'win32':
|
||||||
return 'windows';
|
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:
|
default:
|
||||||
return process.platform;
|
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 {
|
export interface IZuluVersions {
|
||||||
id: number;
|
package_uuid: string;
|
||||||
name: string;
|
name: string;
|
||||||
url: string;
|
download_url: string;
|
||||||
jdk_version: Array<number>;
|
java_version: Array<number>;
|
||||||
zulu_version: Array<number>;
|
distro_version: Array<number>;
|
||||||
|
openjdk_build_number: number;
|
||||||
|
latest: boolean;
|
||||||
|
availability_type: string;
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-1
@@ -21,7 +21,7 @@ async function run() {
|
|||||||
const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE);
|
const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE);
|
||||||
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
|
const architecture = core.getInput(constants.INPUT_ARCHITECTURE);
|
||||||
const packageType = core.getInput(constants.INPUT_JAVA_PACKAGE);
|
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 cache = core.getInput(constants.INPUT_CACHE);
|
||||||
const cacheDependencyPath = core.getInput(
|
const cacheDependencyPath = core.getInput(
|
||||||
constants.INPUT_CACHE_DEPENDENCY_PATH
|
constants.INPUT_CACHE_DEPENDENCY_PATH
|
||||||
@@ -128,6 +128,19 @@ async function run() {
|
|||||||
|
|
||||||
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(
|
async function installVersion(
|
||||||
version: string,
|
version: string,
|
||||||
options: installerInputsOptions,
|
options: installerInputsOptions,
|
||||||
|
|||||||
+13
-28
@@ -5,7 +5,6 @@ import * as core from '@actions/core';
|
|||||||
import * as io from '@actions/io';
|
import * as io from '@actions/io';
|
||||||
import * as constants from './constants';
|
import * as constants from './constants';
|
||||||
|
|
||||||
import {getBooleanInput} from './util';
|
|
||||||
import {create as xmlCreate} from 'xmlbuilder2';
|
import {create as xmlCreate} from 'xmlbuilder2';
|
||||||
|
|
||||||
interface JdkInfo {
|
interface JdkInfo {
|
||||||
@@ -27,10 +26,6 @@ export async function configureToolchains(
|
|||||||
const settingsDirectory =
|
const settingsDirectory =
|
||||||
core.getInput(constants.INPUT_SETTINGS_PATH) ||
|
core.getInput(constants.INPUT_SETTINGS_PATH) ||
|
||||||
path.join(os.homedir(), constants.M2_DIR);
|
path.join(os.homedir(), constants.M2_DIR);
|
||||||
const overwriteSettings = getBooleanInput(
|
|
||||||
constants.INPUT_OVERWRITE_SETTINGS,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
await createToolchainsSettings({
|
await createToolchainsSettings({
|
||||||
jdkInfo: {
|
jdkInfo: {
|
||||||
@@ -39,19 +34,16 @@ export async function configureToolchains(
|
|||||||
id,
|
id,
|
||||||
jdkHome
|
jdkHome
|
||||||
},
|
},
|
||||||
settingsDirectory,
|
settingsDirectory
|
||||||
overwriteSettings
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createToolchainsSettings({
|
export async function createToolchainsSettings({
|
||||||
jdkInfo,
|
jdkInfo,
|
||||||
settingsDirectory,
|
settingsDirectory
|
||||||
overwriteSettings
|
|
||||||
}: {
|
}: {
|
||||||
jdkInfo: JdkInfo;
|
jdkInfo: JdkInfo;
|
||||||
settingsDirectory: string;
|
settingsDirectory: string;
|
||||||
overwriteSettings: boolean;
|
|
||||||
}) {
|
}) {
|
||||||
core.info(
|
core.info(
|
||||||
`Creating ${constants.MVN_TOOLCHAINS_FILE} for JDK version ${jdkInfo.version} from ${jdkInfo.vendor}`
|
`Creating ${constants.MVN_TOOLCHAINS_FILE} for JDK version ${jdkInfo.version} from ${jdkInfo.vendor}`
|
||||||
@@ -68,11 +60,7 @@ export async function createToolchainsSettings({
|
|||||||
jdkInfo.id,
|
jdkInfo.id,
|
||||||
jdkInfo.jdkHome
|
jdkInfo.jdkHome
|
||||||
);
|
);
|
||||||
await writeToolchainsFileToDisk(
|
await writeToolchainsFileToDisk(settingsDirectory, updatedToolchains);
|
||||||
settingsDirectory,
|
|
||||||
updatedToolchains,
|
|
||||||
overwriteSettings
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// only exported for testing purposes
|
// only exported for testing purposes
|
||||||
@@ -172,22 +160,19 @@ async function readExistingToolchainsFile(directory: string) {
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
async function writeToolchainsFileToDisk(
|
async function writeToolchainsFileToDisk(directory: string, settings: string) {
|
||||||
directory: string,
|
|
||||||
settings: string,
|
|
||||||
overwriteSettings: boolean
|
|
||||||
) {
|
|
||||||
const location = path.join(directory, constants.MVN_TOOLCHAINS_FILE);
|
const location = path.join(directory, constants.MVN_TOOLCHAINS_FILE);
|
||||||
const settingsExists = fs.existsSync(location);
|
const settingsExists = fs.existsSync(location);
|
||||||
if (settingsExists && overwriteSettings) {
|
// The toolchains file is produced by a non-destructive merge (existing JDK,
|
||||||
core.info(`Overwriting existing file ${location}`);
|
// custom, and non-jdk toolchains are preserved – see generateToolchainDefinition),
|
||||||
} else if (!settingsExists) {
|
// so it is always safe to write it. Unlike settings.xml, it is therefore not
|
||||||
core.info(`Writing to ${location}`);
|
// gated behind the `overwrite-settings` input; that would prevent subsequent
|
||||||
|
// setup-java runs from registering additional JDKs and silently drop the
|
||||||
|
// toolchain entries created by earlier runs.
|
||||||
|
if (settingsExists) {
|
||||||
|
core.info(`Updating existing file ${location}`);
|
||||||
} else {
|
} else {
|
||||||
core.info(
|
core.info(`Writing to ${location}`);
|
||||||
`Skipping generation of ${location} because file already exists and overwriting is not enabled`
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return fs.writeFileSync(location, settings, {
|
return fs.writeFileSync(location, settings, {
|
||||||
|
|||||||
+57
-1
@@ -146,8 +146,10 @@ export function getVersionFromFileContent(
|
|||||||
|
|
||||||
const versionFileName = getFileName(versionFile);
|
const versionFileName = getFileName(versionFile);
|
||||||
if (versionFileName == '.tool-versions') {
|
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 =
|
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') {
|
} else if (versionFileName == '.sdkmanrc') {
|
||||||
// Match both version and optional distribution identifier
|
// Match both version and optional distribution identifier
|
||||||
javaVersionRegExp =
|
javaVersionRegExp =
|
||||||
@@ -170,6 +172,17 @@ export function getVersionFromFileContent(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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(
|
core.debug(
|
||||||
`Parsed version '${capturedVersion}' from file '${versionFileName}'`
|
`Parsed version '${capturedVersion}' from file '${versionFileName}'`
|
||||||
);
|
);
|
||||||
@@ -235,6 +248,49 @@ function mapSdkmanDistribution(sdkmanDist: string): string | undefined {
|
|||||||
return mapped;
|
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`
|
// By convention, action expects version 8 in the format `8.*` instead of `1.8`
|
||||||
function avoidOldNotation(content: string): string {
|
function avoidOldNotation(content: string): string {
|
||||||
return content.startsWith('1.') ? content.substring(2) : content;
|
return content.startsWith('1.') ? content.substring(2) : content;
|
||||||
|
|||||||
Reference in New Issue
Block a user