mirror of
https://gh-proxy.com/github.com/actions/setup-java.git
synced 2026-10-03 02:56:04 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91d3aa4956 | ||
|
|
f0bb916062 | ||
|
|
d23aed3c80 | ||
|
|
8d22286106 | ||
|
|
db2f350d2b | ||
|
|
5f00602cd1 | ||
|
|
d61af71edf | ||
|
|
ae26cabe43 | ||
|
|
ee43590bc7 | ||
|
|
c187df66d0 | ||
|
|
8db439b6b4 | ||
|
|
e39cf0ebdc | ||
|
|
770ccdbc4b | ||
|
|
6a258a9690 | ||
|
|
7ac3cd263f | ||
|
|
d34438b137 | ||
|
|
61c179a6ef | ||
|
|
68c162b39c | ||
|
|
b02a10773f |
@@ -28,6 +28,3 @@ jobs:
|
|||||||
- run: npm run build
|
- run: npm run build
|
||||||
- run: npm run format-check
|
- run: npm run format-check
|
||||||
- run: npm test
|
- run: npm test
|
||||||
- name: Verify no unstaged changes
|
|
||||||
if: runner.os != 'windows'
|
|
||||||
run: bash __tests__/verify-no-unstaged-changes.sh
|
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# `dist/index.js` is a special file in Actions.
|
||||||
|
# When you reference an action with `uses:` in a workflow,
|
||||||
|
# `index.js` is the code that will run.
|
||||||
|
# For our project, we generate this file through a build process from other source files.
|
||||||
|
# We need to make sure the checked-in `index.js` actually matches what we expect it to be.
|
||||||
|
name: Check dist/
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-dist:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set Node.js 12.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Rebuild the dist/ directory
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Compare the expected and actual dist/ directories
|
||||||
|
run: |
|
||||||
|
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
|
||||||
|
echo "Detected uncommitted changes after build. See status below:"
|
||||||
|
git diff
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
id: diff
|
||||||
|
|
||||||
|
# If index.js was different than expected, upload the expected version as an artifact
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: dist/
|
||||||
@@ -20,8 +20,11 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
distribution: ['temurin', 'adopt', 'adopt-openj9', 'zulu'] # internally 'adopt-hotspot' is the same as 'adopt'
|
distribution: ['temurin', 'adopt', 'adopt-openj9', 'zulu', 'liberica', 'microsoft' ] # internally 'adopt-hotspot' is the same as 'adopt'
|
||||||
version: ['8', '11', '16']
|
version: ['8', '11', '16']
|
||||||
|
exclude:
|
||||||
|
- distribution: microsoft
|
||||||
|
version: 8
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@@ -43,7 +46,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
distribution: ['temurin', 'zulu']
|
distribution: ['temurin', 'zulu', 'liberica']
|
||||||
version:
|
version:
|
||||||
- '11.0'
|
- '11.0'
|
||||||
- '8.0.302'
|
- '8.0.302'
|
||||||
@@ -69,7 +72,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
distribution: ['temurin', 'zulu']
|
distribution: ['temurin', 'zulu', 'liberica']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@@ -136,7 +139,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
distribution: ['temurin', 'zulu']
|
distribution: ['temurin', 'zulu', 'liberica']
|
||||||
java-package: ['jre']
|
java-package: ['jre']
|
||||||
version: ['16.0']
|
version: ['16.0']
|
||||||
include:
|
include:
|
||||||
@@ -148,6 +151,14 @@ jobs:
|
|||||||
java-package: jdk+fx
|
java-package: jdk+fx
|
||||||
version: '8.0.242'
|
version: '8.0.242'
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
|
- distribution: 'liberica'
|
||||||
|
java-package: jdk+fx
|
||||||
|
version: '8'
|
||||||
|
os: ubuntu-latest
|
||||||
|
- distribution: 'liberica'
|
||||||
|
java-package: jre+fx
|
||||||
|
version: '11'
|
||||||
|
os: ubuntu-latest
|
||||||
exclude:
|
exclude:
|
||||||
# Eclipse Temurin currently doesn't publish JREs, only JDKs
|
# Eclipse Temurin currently doesn't publish JREs, only JDKs
|
||||||
- distribution: 'temurin'
|
- distribution: 'temurin'
|
||||||
@@ -166,16 +177,17 @@ jobs:
|
|||||||
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
|
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
setup-java-custom-architecture:
|
# Only Liberica and Zulu provide x86
|
||||||
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x86) - ${{ matrix.os }}
|
setup-java-x86:
|
||||||
|
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-${{ matrix.architecture }}) - ${{ matrix.os }}
|
||||||
needs: setup-java-major-minor-versions
|
needs: setup-java-major-minor-versions
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
# Only Zulu provides x86 arch for now and only for windows / ubuntu
|
# x86 is not supported on macOS
|
||||||
os: [windows-latest, ubuntu-latest]
|
os: [windows-latest, ubuntu-latest]
|
||||||
distribution: ['zulu']
|
distribution: ['liberica', 'zulu']
|
||||||
version: ['11']
|
version: ['11']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -186,7 +198,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
distribution: ${{ matrix.distribution }}
|
distribution: ${{ matrix.distribution }}
|
||||||
java-version: ${{ matrix.version }}
|
java-version: ${{ matrix.version }}
|
||||||
architecture: x86
|
architecture: 'x86'
|
||||||
- name: Verify Java
|
- name: Verify Java
|
||||||
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
|
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
# Only Microsoft provides AArch64. However, GitHub-hosted runners do not support this architecture.
|
||||||
@@ -1,8 +1,13 @@
|
|||||||
name: Licensed
|
name: Licensed
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push: {branches: main}
|
push:
|
||||||
pull_request: {branches: main}
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
@@ -14,7 +19,7 @@ jobs:
|
|||||||
- name: Install licensed
|
- name: Install licensed
|
||||||
run: |
|
run: |
|
||||||
cd $RUNNER_TEMP
|
cd $RUNNER_TEMP
|
||||||
curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/2.12.2/licensed-2.12.2-linux-x64.tar.gz
|
curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/3.3.1/licensed-3.3.1-linux-x64.tar.gz
|
||||||
sudo tar -xzf licensed.tar.gz
|
sudo tar -xzf licensed.tar.gz
|
||||||
sudo mv licensed /usr/local/bin/licensed
|
sudo mv licensed /usr/local/bin/licensed
|
||||||
- run: licensed status
|
- run: licensed status
|
||||||
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
@@ -29,7 +29,7 @@ steps:
|
|||||||
- uses: actions/setup-java@v2
|
- uses: actions/setup-java@v2
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||||
java-version: '11'
|
java-version: '17'
|
||||||
- run: java -cp java HelloWorldApp
|
- run: java -cp java HelloWorldApp
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -46,8 +46,8 @@ steps:
|
|||||||
|
|
||||||
#### Supported version syntax
|
#### Supported version syntax
|
||||||
The `java-version` input supports an exact version or a version range using [SemVer](https://semver.org/) notation:
|
The `java-version` input supports an exact version or a version range using [SemVer](https://semver.org/) notation:
|
||||||
- major versions: `8`, `11`, `16`
|
- major versions: `8`, `11`, `16`, `17`
|
||||||
- more specific versions: `11.0`, `11.0.4`, `8.0.232`, `8.0.282+8`
|
- more specific versions: `17.0`, `11.0`, `11.0.4`, `8.0.232`, `8.0.282+8`
|
||||||
- early access (EA) versions: `15-ea`, `15.0.0-ea`, `15.0.0-ea.2`, `15.0.0+2-ea`
|
- early access (EA) versions: `15-ea`, `15.0.0-ea`, `15.0.0-ea.2`, `15.0.0+2-ea`
|
||||||
|
|
||||||
#### Supported distributions
|
#### Supported distributions
|
||||||
@@ -57,7 +57,9 @@ Currently, the following distributions are supported:
|
|||||||
| `temurin` | Eclipse Temurin | [Link](https://adoptium.net/) | [Link](https://adoptium.net/about.html)
|
| `temurin` | Eclipse Temurin | [Link](https://adoptium.net/) | [Link](https://adoptium.net/about.html)
|
||||||
| `zulu` | Zulu OpenJDK | [Link](https://www.azul.com/downloads/zulu-community/?package=jdk) | [Link](https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-terms-of-use/) |
|
| `zulu` | Zulu OpenJDK | [Link](https://www.azul.com/downloads/zulu-community/?package=jdk) | [Link](https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-terms-of-use/) |
|
||||||
| `adopt` or `adopt-hotspot` | Adopt OpenJDK Hotspot | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) |
|
| `adopt` or `adopt-hotspot` | Adopt OpenJDK Hotspot | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) |
|
||||||
| `adopt-openj9` | Adopt OpenJDK OpenJ9 | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html)
|
| `adopt-openj9` | Adopt OpenJDK OpenJ9 | [Link](https://adoptopenjdk.net/) | [Link](https://adoptopenjdk.net/about.html) |
|
||||||
|
| `liberica` | Liberica JDK | [Link](https://bell-sw.com/) | [Link](https://bell-sw.com/liberica_eula/) |
|
||||||
|
| `microsoft` | Microsoft Build of OpenJDK | [Link](https://www.microsoft.com/openjdk) | [Link](https://docs.microsoft.com/java/openjdk/faq)
|
||||||
|
|
||||||
**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.
|
**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.
|
||||||
|
|
||||||
@@ -75,7 +77,7 @@ steps:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
cache: 'gradle'
|
cache: 'gradle'
|
||||||
- run: ./gradlew build
|
- run: ./gradlew build --no-daemon
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Caching maven dependencies
|
#### Caching maven dependencies
|
||||||
@@ -134,6 +136,7 @@ jobs:
|
|||||||
- [Eclipse Temurin](docs/advanced-usage.md#Eclipse-Temurin)
|
- [Eclipse Temurin](docs/advanced-usage.md#Eclipse-Temurin)
|
||||||
- [Adopt](docs/advanced-usage.md#Adopt)
|
- [Adopt](docs/advanced-usage.md#Adopt)
|
||||||
- [Zulu](docs/advanced-usage.md#Zulu)
|
- [Zulu](docs/advanced-usage.md#Zulu)
|
||||||
|
- [Liberica](docs/advanced-usage.md#Liberica)
|
||||||
- [Installing custom Java package type](docs/advanced-usage.md#Installing-custom-Java-package-type)
|
- [Installing custom Java package type](docs/advanced-usage.md#Installing-custom-Java-package-type)
|
||||||
- [Installing custom Java architecture](docs/advanced-usage.md#Installing-custom-Java-architecture)
|
- [Installing custom Java architecture](docs/advanced-usage.md#Installing-custom-Java-architecture)
|
||||||
- [Installing custom Java distribution from local file](docs/advanced-usage.md#Installing-Java-from-local-file)
|
- [Installing custom Java distribution from local file](docs/advanced-usage.md#Installing-Java-from-local-file)
|
||||||
|
|||||||
@@ -0,0 +1,434 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"buildVersion": 36,
|
||||||
|
"updateVersion": 0,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/14+36/bellsoft-jdk14+36-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "14+36",
|
||||||
|
"featureVersion": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 11,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.11+9",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 8,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/14.0.1+8/bellsoft-jdk14.0.1+8-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "14.0.1+8",
|
||||||
|
"featureVersion": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 262,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u262+10/bellsoft-jdk8u262+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u262+10",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 1,
|
||||||
|
"updateVersion": 275,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jdk8u275+1-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u275+1",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 1,
|
||||||
|
"updateVersion": 9,
|
||||||
|
"patchVersion": 1,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.9.1+1",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 8,
|
||||||
|
"updateVersion": 202,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u202/bellsoft-jdk8u202-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u202+8",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 33,
|
||||||
|
"updateVersion": 0,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/12/bellsoft-jdk12-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "12+33",
|
||||||
|
"featureVersion": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 8,
|
||||||
|
"updateVersion": 282,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u282+8/bellsoft-jdk8u282+8-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u282+8",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 11,
|
||||||
|
"updateVersion": 9,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.9+11/bellsoft-jdk11.0.9+11-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.9+11",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 33,
|
||||||
|
"updateVersion": 0,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/13/bellsoft-jdk13-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "13+33",
|
||||||
|
"featureVersion": 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 12,
|
||||||
|
"updateVersion": 9,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jdk11.0.9+12-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.9+12",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 7,
|
||||||
|
"updateVersion": 242,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u242+7/bellsoft-jdk8u242+7-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u242+7",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/13.0.2+9/bellsoft-jdk13.0.2+9-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "13.0.2+9",
|
||||||
|
"featureVersion": 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/13.0.1/bellsoft-jdk13.0.1-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "13.0.1+9",
|
||||||
|
"featureVersion": 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 1,
|
||||||
|
"updateVersion": 265,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u265+1/bellsoft-jdk8u265+1-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u265+1",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/15.0.1+9/bellsoft-jdk15.0.1+9-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "15.0.1+9",
|
||||||
|
"featureVersion": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 272,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u272+10/bellsoft-jdk8u272+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u272+10",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 7,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jdk16.0.2+7-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "16.0.2+7",
|
||||||
|
"featureVersion": 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 6,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.6+10/bellsoft-jdk11.0.6+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.6+10",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 252,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u252+9/bellsoft-jdk8u252+9-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u252+9",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 12,
|
||||||
|
"updateVersion": 212,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u212/bellsoft-jdk8u212-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u212+12",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/15.0.2+10/bellsoft-jdk15.0.2+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "15.0.2+10",
|
||||||
|
"featureVersion": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 10,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jdk11.0.10+9-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.10+9",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 0,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.1/bellsoft-jdk11.0.1-macos-amd64.tar.gz",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.1+0",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 7,
|
||||||
|
"updateVersion": 12,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.12+7",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 36,
|
||||||
|
"updateVersion": 0,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/16+36/bellsoft-jdk16+36-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "16+36",
|
||||||
|
"featureVersion": 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 12,
|
||||||
|
"updateVersion": 3,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.3/bellsoft-jdk11.0.3-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.3+12",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 8,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jdk11.0.8+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.8+10",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 7,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.2/bellsoft-jdk11.0.2-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.2+7",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 5,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.5/bellsoft-jdk11.0.5-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.5+10",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 4,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.4/bellsoft-jdk11.0.4-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.4+10",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/12.0.2/bellsoft-jdk12.0.2-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "12.0.2+10",
|
||||||
|
"featureVersion": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 12,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/12.0.1/bellsoft-jdk12.0.1-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "12.0.1+12",
|
||||||
|
"featureVersion": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/13.0.1+10/bellsoft-jdk13.0.1+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "13.0.1+10",
|
||||||
|
"featureVersion": 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 11,
|
||||||
|
"updateVersion": 5,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jdk11.0.5+11-macos-amd64.tar.gz",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.5+11",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 11,
|
||||||
|
"updateVersion": 5,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jdk11.0.5+11-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.5+11",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 292,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u292+10/bellsoft-jdk8u292+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u292+10",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 11,
|
||||||
|
"updateVersion": 222,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u222/bellsoft-jdk8u222-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u222+11",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 36,
|
||||||
|
"updateVersion": 0,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/15+36/bellsoft-jdk15+36-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "15+36",
|
||||||
|
"featureVersion": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 7,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/11.0.7+10/bellsoft-jdk11.0.7+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "11.0.7+10",
|
||||||
|
"featureVersion": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 10,
|
||||||
|
"updateVersion": 232,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u232+10/bellsoft-jdk8u232+10-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u232+10",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 8,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/15.0.2+8/bellsoft-jdk15.0.2+8-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "15.0.2+8",
|
||||||
|
"featureVersion": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 8,
|
||||||
|
"updateVersion": 302,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jdk8u302+8-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u302+8",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 12,
|
||||||
|
"updateVersion": 192,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u192.all/bellsoft-jdk1.8.0-macos-amd64.tar.gz",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u192+12",
|
||||||
|
"featureVersion": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 13,
|
||||||
|
"updateVersion": 2,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/14.0.2+13/bellsoft-jdk14.0.2+13-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "14.0.2+13",
|
||||||
|
"featureVersion": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 1,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jdk16.0.1+9-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "16.0.1+9",
|
||||||
|
"featureVersion": 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildVersion": 9,
|
||||||
|
"updateVersion": 232,
|
||||||
|
"patchVersion": 0,
|
||||||
|
"downloadUrl": "https://github.com/bell-sw/Liberica/releases/download/8u232/bellsoft-jdk8u232-macos-amd64.zip",
|
||||||
|
"interimVersion": 0,
|
||||||
|
"version": "8u232+9",
|
||||||
|
"featureVersion": 8
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
import { LibericaDistributions } from '../../src/distributions/liberica/installer';
|
||||||
|
import { ArchitectureOptions, LibericaVersion } from '../../src/distributions/liberica/models';
|
||||||
|
import { HttpClient } from '@actions/http-client';
|
||||||
|
|
||||||
|
const manifestData = require('../data/liberica.json') as LibericaVersion[];
|
||||||
|
|
||||||
|
describe('getAvailableVersions', () => {
|
||||||
|
let spyHttpClient: jest.SpyInstance;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
|
||||||
|
spyHttpClient.mockReturnValue({
|
||||||
|
statusCode: 200,
|
||||||
|
headers: {},
|
||||||
|
result: manifestData
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.resetAllMocks();
|
||||||
|
jest.clearAllMocks();
|
||||||
|
jest.restoreAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
[
|
||||||
|
{ version: '11.x', architecture: 'x86', packageType: 'jdk', checkLatest: false },
|
||||||
|
'bundle-type=jdk&bitness=32&arch=x86&build-type=all'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{ version: '11-ea', architecture: 'x86', packageType: 'jdk', checkLatest: false },
|
||||||
|
'bundle-type=jdk&bitness=32&arch=x86&build-type=ea'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{ version: '16.0.2', architecture: 'x64', packageType: 'jdk', checkLatest: false },
|
||||||
|
'bundle-type=jdk&bitness=64&arch=x86&build-type=all'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{ version: '16.0.2', architecture: 'x64', packageType: 'jre', checkLatest: false },
|
||||||
|
'bundle-type=jre&bitness=64&arch=x86&build-type=all'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{ version: '8', architecture: 'armv7', packageType: 'jdk+fx', checkLatest: false },
|
||||||
|
'bundle-type=jdk-full&bitness=32&arch=arm&build-type=all'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{ version: '8', architecture: 'aarch64', packageType: 'jre+fx', checkLatest: false },
|
||||||
|
'bundle-type=jre-full&bitness=64&arch=arm&build-type=all'
|
||||||
|
]
|
||||||
|
])('build correct url for %s -> %s', async (input, urlParams) => {
|
||||||
|
const additionalParams =
|
||||||
|
'&installation-type=archive&fields=downloadUrl%2Cversion%2CfeatureVersion%2CinterimVersion%2C' +
|
||||||
|
'updateVersion%2CbuildVersion';
|
||||||
|
const distribution = new LibericaDistributions(input);
|
||||||
|
distribution['getPlatformOption'] = () => 'macos';
|
||||||
|
const buildUrl = `https://api.bell-sw.com/v1/liberica/releases?os=macos&${urlParams}${additionalParams}`;
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient.mock.calls).toHaveLength(1);
|
||||||
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('load available versions', async () => {
|
||||||
|
const distribution = new LibericaDistributions({
|
||||||
|
version: '11',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
const availableVersions = await distribution['getAvailableVersions']();
|
||||||
|
expect(availableVersions).toEqual(manifestData);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getArchitectureOptions', () => {
|
||||||
|
it.each([
|
||||||
|
['x86', { bitness: '32', arch: 'x86' }],
|
||||||
|
['x64', { bitness: '64', arch: 'x86' }],
|
||||||
|
['armv7', { bitness: '32', arch: 'arm' }],
|
||||||
|
['aarch64', { bitness: '64', arch: 'arm' }],
|
||||||
|
['ppc64le', { bitness: '64', arch: 'ppc' }]
|
||||||
|
] as [string, ArchitectureOptions][])('parse architecture %s -> %s', (input, expected) => {
|
||||||
|
const distributions = new LibericaDistributions({
|
||||||
|
architecture: input,
|
||||||
|
checkLatest: false,
|
||||||
|
packageType: '',
|
||||||
|
version: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(distributions['getArchitectureOptions']()).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each(['armv6', 's390x'])('not support architecture %s', input => {
|
||||||
|
const distributions = new LibericaDistributions({
|
||||||
|
architecture: input,
|
||||||
|
checkLatest: false,
|
||||||
|
packageType: '',
|
||||||
|
version: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(() => distributions['getArchitectureOptions']()).toThrow(
|
||||||
|
/Architecture '\w+' is not supported\. Supported architectures: .*/
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('findPackageForDownload', () => {
|
||||||
|
let distribution: LibericaDistributions;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
distribution = new LibericaDistributions({
|
||||||
|
version: '',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
distribution['getAvailableVersions'] = async () => manifestData;
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['8', '8.0.302+8'],
|
||||||
|
['11.x', '11.0.12+7'],
|
||||||
|
['8.0', '8.0.302+8'],
|
||||||
|
['11.0.x', '11.0.12+7'],
|
||||||
|
['15', '15.0.2+10'],
|
||||||
|
['15.0', '15.0.2+10'],
|
||||||
|
['15.0.0', '15.0.0+36'],
|
||||||
|
['8.0.232', '8.0.232+10'],
|
||||||
|
['8.0.232+9', '8.0.232+9'],
|
||||||
|
['15.0.2+8', '15.0.2+8'],
|
||||||
|
['15.0.2+10', '15.0.2+10']
|
||||||
|
])('version is %s -> %s', async (input, expected) => {
|
||||||
|
const result = await distribution['findPackageForDownload'](input);
|
||||||
|
expect(result.version).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw an error', async () => {
|
||||||
|
await expect(distribution['findPackageForDownload']('17')).rejects.toThrow(
|
||||||
|
/Could not find satisfied version for semver */
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getPlatformOption', () => {
|
||||||
|
const distributions = new LibericaDistributions({
|
||||||
|
architecture: 'x64',
|
||||||
|
version: '11',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['linux', 'linux'],
|
||||||
|
['darwin', 'macos'],
|
||||||
|
['win32', 'windows'],
|
||||||
|
['cygwin', 'windows'],
|
||||||
|
['sunos', 'solaris']
|
||||||
|
])('os version %s -> %s', (input, expected) => {
|
||||||
|
const actual = distributions['getPlatformOption'](input as NodeJS.Platform);
|
||||||
|
|
||||||
|
expect(actual).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each(['aix', 'android', 'freebsd', 'openbsd', 'netbsd'])(
|
||||||
|
'not support os version %s',
|
||||||
|
input => {
|
||||||
|
expect(() => distributions['getPlatformOption'](input as NodeJS.Platform)).toThrow(
|
||||||
|
/Platform '\w+' is not supported\. Supported platforms: .+/
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('convertVersionToSemver', () => {
|
||||||
|
const distributions = new LibericaDistributions({
|
||||||
|
architecture: 'x64',
|
||||||
|
version: '11',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
[{ featureVersion: 11, interimVersion: 0, updateVersion: 12, buildVersion: 7 }, '11.0.12+7'],
|
||||||
|
[{ featureVersion: 11, interimVersion: 0, updateVersion: 12, buildVersion: 0 }, '11.0.12'],
|
||||||
|
[{ featureVersion: 11, interimVersion: 0, updateVersion: 0, buildVersion: 13 }, '11.0.0+13']
|
||||||
|
])('%s -> %s', (input, expected) => {
|
||||||
|
const actual = distributions['convertVersionToSemver']({
|
||||||
|
downloadUrl: '',
|
||||||
|
version: '',
|
||||||
|
...input
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(actual).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
import { MicrosoftDistributions } from '../../src/distributions/microsoft/installer';
|
||||||
|
|
||||||
|
describe('findPackageForDownload', () => {
|
||||||
|
let distribution: MicrosoftDistributions;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
distribution = new MicrosoftDistributions({
|
||||||
|
version: '',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
[
|
||||||
|
'17.x',
|
||||||
|
'17.0.1',
|
||||||
|
'https://aka.ms/download-jdk/microsoft-jdk-17.0.1.12.1-{{OS_TYPE}}-x64.{{ARCHIVE_TYPE}}'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'16.0.x',
|
||||||
|
'16.0.2',
|
||||||
|
'https://aka.ms/download-jdk/microsoft-jdk-16.0.2.7.1-{{OS_TYPE}}-x64.{{ARCHIVE_TYPE}}'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'11.0.13',
|
||||||
|
'11.0.13',
|
||||||
|
'https://aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-{{OS_TYPE}}-x64.{{ARCHIVE_TYPE}}'
|
||||||
|
]
|
||||||
|
])('version is %s -> %s', async (input, expectedVersion, expectedUrl) => {
|
||||||
|
const result = await distribution['findPackageForDownload'](input);
|
||||||
|
expect(result.version).toBe(expectedVersion);
|
||||||
|
let os: string;
|
||||||
|
let archive: string;
|
||||||
|
switch (process.platform) {
|
||||||
|
case 'darwin':
|
||||||
|
os = 'macos';
|
||||||
|
archive = 'tar.gz';
|
||||||
|
break;
|
||||||
|
case 'win32':
|
||||||
|
os = 'windows';
|
||||||
|
archive = 'zip';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
os = process.platform.toString();
|
||||||
|
archive = 'tar.gz';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const url = expectedUrl.replace('{{OS_TYPE}}', os).replace('{{ARCHIVE_TYPE}}', archive);
|
||||||
|
expect(result.url).toBe(url);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw an error', async () => {
|
||||||
|
await expect(distribution['findPackageForDownload']('8')).rejects.toThrow(
|
||||||
|
/Could not find satisfied version for SemVer */
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getPlatformOption', () => {
|
||||||
|
const distributions = new MicrosoftDistributions({
|
||||||
|
architecture: 'x64',
|
||||||
|
version: '11',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['linux', 'tar.gz', 'linux'],
|
||||||
|
['darwin', 'tar.gz', 'macos'],
|
||||||
|
['win32', 'zip', 'windows']
|
||||||
|
])('os version %s -> %s', (input, expectedArchive, expectedOs) => {
|
||||||
|
const actual = distributions['getPlatformOption'](input as NodeJS.Platform);
|
||||||
|
|
||||||
|
expect(actual.archive).toEqual(expectedArchive);
|
||||||
|
expect(actual.os).toEqual(expectedOs);
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each(['aix', 'android', 'freebsd', 'openbsd', 'netbsd', 'solaris', 'cygwin'])(
|
||||||
|
'not support os version %s',
|
||||||
|
input => {
|
||||||
|
expect(() => distributions['getPlatformOption'](input as NodeJS.Platform)).toThrow(
|
||||||
|
/Platform '\w+' is not supported\. Supported platforms: .+/
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
@@ -139,6 +139,7 @@ describe('findPackageForDownload', () => {
|
|||||||
packageType: 'jdk',
|
packageType: 'jdk',
|
||||||
checkLatest: false
|
checkLatest: false
|
||||||
});
|
});
|
||||||
|
distribution['getAvailableVersions'] = async () => manifestData;
|
||||||
await expect(
|
await expect(
|
||||||
distribution['findPackageForDownload'](distribution['version'])
|
distribution['findPackageForDownload'](distribution['version'])
|
||||||
).rejects.toThrowError(/Could not find satisfied version for semver */);
|
).rejects.toThrowError(/Could not find satisfied version for semver */);
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [[ "$(git status --porcelain)" != "" ]]; then
|
|
||||||
echo ----------------------------------------
|
|
||||||
echo git status
|
|
||||||
echo ----------------------------------------
|
|
||||||
git status
|
|
||||||
echo ----------------------------------------
|
|
||||||
echo git diff
|
|
||||||
echo ----------------------------------------
|
|
||||||
git diff
|
|
||||||
echo ----------------------------------------
|
|
||||||
echo Troubleshooting
|
|
||||||
echo ----------------------------------------
|
|
||||||
echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && npm ci && npm run pre-checkin"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
Vendored
+11605
-11050
File diff suppressed because one or more lines are too long
Vendored
+32419
-31563
File diff suppressed because one or more lines are too long
@@ -53,6 +53,29 @@ steps:
|
|||||||
- run: java -cp java HelloWorldApp
|
- run: java -cp java HelloWorldApp
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Liberica
|
||||||
|
```yaml
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
distribution: 'liberica'
|
||||||
|
java-version: '11'
|
||||||
|
java-package: jdk # optional (jdk, jre, jdk+fx or jre+fx) - defaults to jdk
|
||||||
|
- run: java -cp java HelloWorldApp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Microsoft
|
||||||
|
```yaml
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
distribution: 'microsoft'
|
||||||
|
java-version: '11'
|
||||||
|
- run: java -cp java HelloWorldApp
|
||||||
|
```
|
||||||
|
|
||||||
## Installing custom Java package type
|
## Installing custom Java package type
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
Generated
+2652
-9041
File diff suppressed because it is too large
Load Diff
+7
-7
@@ -24,25 +24,25 @@
|
|||||||
"author": "GitHub",
|
"author": "GitHub",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^1.0.7",
|
"@actions/cache": "^1.0.8",
|
||||||
"@actions/core": "^1.2.6",
|
"@actions/core": "^1.10.0",
|
||||||
"@actions/exec": "^1.0.4",
|
"@actions/exec": "^1.0.4",
|
||||||
"@actions/glob": "^0.2.0",
|
"@actions/glob": "^0.2.0",
|
||||||
"@actions/http-client": "^1.0.9",
|
"@actions/http-client": "^1.0.11",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^1.6.1",
|
"@actions/tool-cache": "^1.6.1",
|
||||||
"semver": "^7.3.4",
|
"semver": "^7.3.4",
|
||||||
"xmlbuilder2": "^2.4.0"
|
"xmlbuilder2": "^2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^26.0.20",
|
"@types/jest": "^27.0.2",
|
||||||
"@types/node": "^12.19.13",
|
"@types/node": "^12.19.13",
|
||||||
"@types/semver": "^7.3.4",
|
"@types/semver": "^7.3.4",
|
||||||
"@zeit/ncc": "^0.20.5",
|
"@zeit/ncc": "^0.20.5",
|
||||||
"jest": "^26.6.3",
|
"jest": "^27.2.5",
|
||||||
"jest-circus": "^26.6.3",
|
"jest-circus": "^27.2.5",
|
||||||
"prettier": "^1.19.1",
|
"prettier": "^1.19.1",
|
||||||
"ts-jest": "^26.5.3",
|
"ts-jest": "^27.0.5",
|
||||||
"typescript": "^4.2.3"
|
"typescript": "^4.2.3"
|
||||||
},
|
},
|
||||||
"husky": {
|
"husky": {
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ async function removePrivateKeyFromKeychain() {
|
|||||||
const keyFingerprint = core.getState(constants.STATE_GPG_PRIVATE_KEY_FINGERPRINT);
|
const keyFingerprint = core.getState(constants.STATE_GPG_PRIVATE_KEY_FINGERPRINT);
|
||||||
await gpg.deleteKey(keyFingerprint);
|
await gpg.deleteKey(keyFingerprint);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed('Failed to remove private key');
|
core.setFailed(`Failed to remove private key due to: ${error.message}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import { LocalDistribution } from './local/installer';
|
|||||||
import { ZuluDistribution } from './zulu/installer';
|
import { ZuluDistribution } from './zulu/installer';
|
||||||
import { AdoptDistribution, AdoptImplementation } from './adopt/installer';
|
import { AdoptDistribution, AdoptImplementation } from './adopt/installer';
|
||||||
import { TemurinDistribution, TemurinImplementation } from './temurin/installer';
|
import { TemurinDistribution, TemurinImplementation } from './temurin/installer';
|
||||||
|
import { LibericaDistributions } from './liberica/installer';
|
||||||
|
import { MicrosoftDistributions } from './microsoft/installer';
|
||||||
|
|
||||||
enum JavaDistribution {
|
enum JavaDistribution {
|
||||||
Adopt = 'adopt',
|
Adopt = 'adopt',
|
||||||
@@ -11,7 +13,9 @@ enum JavaDistribution {
|
|||||||
AdoptOpenJ9 = 'adopt-openj9',
|
AdoptOpenJ9 = 'adopt-openj9',
|
||||||
Temurin = 'temurin',
|
Temurin = 'temurin',
|
||||||
Zulu = 'zulu',
|
Zulu = 'zulu',
|
||||||
JdkFile = 'jdkfile'
|
Liberica = 'liberica',
|
||||||
|
JdkFile = 'jdkfile',
|
||||||
|
Microsoft = 'microsoft'
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getJavaDistribution(
|
export function getJavaDistribution(
|
||||||
@@ -31,6 +35,10 @@ export function getJavaDistribution(
|
|||||||
return new TemurinDistribution(installerOptions, TemurinImplementation.Hotspot);
|
return new TemurinDistribution(installerOptions, TemurinImplementation.Hotspot);
|
||||||
case JavaDistribution.Zulu:
|
case JavaDistribution.Zulu:
|
||||||
return new ZuluDistribution(installerOptions);
|
return new ZuluDistribution(installerOptions);
|
||||||
|
case JavaDistribution.Liberica:
|
||||||
|
return new LibericaDistributions(installerOptions);
|
||||||
|
case JavaDistribution.Microsoft:
|
||||||
|
return new MicrosoftDistributions(installerOptions);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,157 @@
|
|||||||
|
import { JavaBase } from '../base-installer';
|
||||||
|
import { JavaDownloadRelease, JavaInstallerOptions, JavaInstallerResults } from '../base-models';
|
||||||
|
import semver from 'semver';
|
||||||
|
import { extractJdkFile, getDownloadArchiveExtension, isVersionSatisfies } from '../../util';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
import { ArchitectureOptions, LibericaVersion, OsVersions } from './models';
|
||||||
|
import * as tc from '@actions/tool-cache';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
const supportedPlatform = `'linux', 'linux-musl', 'macos', 'solaris', 'windows'`;
|
||||||
|
|
||||||
|
const supportedArchitecture = `'x86', 'x64', 'armv7', 'aarch64', 'ppc64le'`;
|
||||||
|
|
||||||
|
export class LibericaDistributions extends JavaBase {
|
||||||
|
constructor(installerOptions: JavaInstallerOptions) {
|
||||||
|
super('Liberica', installerOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected async downloadTool(javaRelease: JavaDownloadRelease): Promise<JavaInstallerResults> {
|
||||||
|
core.info(
|
||||||
|
`Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...`
|
||||||
|
);
|
||||||
|
const javaArchivePath = await tc.downloadTool(javaRelease.url);
|
||||||
|
|
||||||
|
core.info(`Extracting Java archive...`);
|
||||||
|
const extension = getDownloadArchiveExtension();
|
||||||
|
const extractedJavaPath = await extractJdkFile(javaArchivePath, extension);
|
||||||
|
|
||||||
|
const archiveName = fs.readdirSync(extractedJavaPath)[0];
|
||||||
|
const archivePath = path.join(extractedJavaPath, archiveName);
|
||||||
|
|
||||||
|
const javaPath = await tc.cacheDir(
|
||||||
|
archivePath,
|
||||||
|
this.toolcacheFolderName,
|
||||||
|
this.getToolcacheVersionName(javaRelease.version),
|
||||||
|
this.architecture
|
||||||
|
);
|
||||||
|
|
||||||
|
return { version: javaRelease.version, path: javaPath };
|
||||||
|
}
|
||||||
|
|
||||||
|
protected async findPackageForDownload(range: string): Promise<JavaDownloadRelease> {
|
||||||
|
const availableVersionsRaw = await this.getAvailableVersions();
|
||||||
|
|
||||||
|
const availableVersions = availableVersionsRaw.map(item => ({
|
||||||
|
url: item.downloadUrl,
|
||||||
|
version: this.convertVersionToSemver(item)
|
||||||
|
}));
|
||||||
|
|
||||||
|
const satisfiedVersion = availableVersions
|
||||||
|
.filter(item => isVersionSatisfies(range, item.version))
|
||||||
|
.sort((a, b) => -semver.compareBuild(a.version, b.version))[0];
|
||||||
|
|
||||||
|
if (!satisfiedVersion) {
|
||||||
|
const availableOptions = availableVersions.map(item => item.version).join(', ');
|
||||||
|
const availableOptionsMessage = availableOptions
|
||||||
|
? `\nAvailable versions: ${availableOptions}`
|
||||||
|
: '';
|
||||||
|
throw new Error(
|
||||||
|
`Could not find satisfied version for semver ${range}. ${availableOptionsMessage}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return satisfiedVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getAvailableVersions(): Promise<LibericaVersion[]> {
|
||||||
|
console.time('liberica-retrieve-available-versions');
|
||||||
|
const url = this.prepareAvailableVersionsUrl();
|
||||||
|
|
||||||
|
if (core.isDebug()) {
|
||||||
|
core.debug(`Gathering available versions from '${url}'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const availableVersions = (await this.http.getJson<LibericaVersion[]>(url)).result ?? [];
|
||||||
|
|
||||||
|
if (core.isDebug()) {
|
||||||
|
core.startGroup('Print information about available versions');
|
||||||
|
console.timeEnd('liberica-retrieve-available-versions');
|
||||||
|
console.log(`Available versions: [${availableVersions.length}]`);
|
||||||
|
console.log(availableVersions.map(item => item.version));
|
||||||
|
core.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
return availableVersions;
|
||||||
|
}
|
||||||
|
|
||||||
|
private prepareAvailableVersionsUrl() {
|
||||||
|
const urlOptions = {
|
||||||
|
os: this.getPlatformOption(),
|
||||||
|
'bundle-type': this.getBundleType(),
|
||||||
|
...this.getArchitectureOptions(),
|
||||||
|
'build-type': this.stable ? 'all' : 'ea',
|
||||||
|
'installation-type': 'archive',
|
||||||
|
fields: 'downloadUrl,version,featureVersion,interimVersion,updateVersion,buildVersion'
|
||||||
|
};
|
||||||
|
|
||||||
|
const searchParams = new URLSearchParams(urlOptions).toString();
|
||||||
|
|
||||||
|
return `https://api.bell-sw.com/v1/liberica/releases?${searchParams}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getBundleType(): string {
|
||||||
|
const [bundleType, feature] = this.packageType.split('+');
|
||||||
|
if (feature?.includes('fx')) {
|
||||||
|
return bundleType + '-full';
|
||||||
|
}
|
||||||
|
return bundleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getArchitectureOptions(): ArchitectureOptions {
|
||||||
|
switch (this.architecture) {
|
||||||
|
case 'x86':
|
||||||
|
return { bitness: '32', arch: 'x86' };
|
||||||
|
case 'x64':
|
||||||
|
return { bitness: '64', arch: 'x86' };
|
||||||
|
case 'armv7':
|
||||||
|
return { bitness: '32', arch: 'arm' };
|
||||||
|
case 'aarch64':
|
||||||
|
return { bitness: '64', arch: 'arm' };
|
||||||
|
case 'ppc64le':
|
||||||
|
return { bitness: '64', arch: 'ppc' };
|
||||||
|
default:
|
||||||
|
throw new Error(
|
||||||
|
`Architecture '${this.architecture}' is not supported. Supported architectures: ${supportedArchitecture}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private getPlatformOption(platform: NodeJS.Platform = process.platform): OsVersions {
|
||||||
|
switch (platform) {
|
||||||
|
case 'darwin':
|
||||||
|
return 'macos';
|
||||||
|
case 'win32':
|
||||||
|
case 'cygwin':
|
||||||
|
return 'windows';
|
||||||
|
case 'linux':
|
||||||
|
return 'linux';
|
||||||
|
case 'sunos':
|
||||||
|
return 'solaris';
|
||||||
|
default:
|
||||||
|
throw new Error(
|
||||||
|
`Platform '${platform}' is not supported. Supported platforms: ${supportedPlatform}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private convertVersionToSemver(version: LibericaVersion): string {
|
||||||
|
let { buildVersion, featureVersion, interimVersion, updateVersion } = version;
|
||||||
|
const mainVersion = [featureVersion, interimVersion, updateVersion].join('.');
|
||||||
|
if (buildVersion != 0) {
|
||||||
|
return `${mainVersion}+${buildVersion}`;
|
||||||
|
}
|
||||||
|
return mainVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
// Models from https://api.bell-sw.com/api.html
|
||||||
|
|
||||||
|
export type Bitness = '32' | '64';
|
||||||
|
export type ArchType = 'arm' | 'ppc' | 'sparc' | 'x86';
|
||||||
|
|
||||||
|
export type OsVersions = 'linux' | 'linux-musl' | 'macos' | 'solaris' | 'windows';
|
||||||
|
|
||||||
|
export interface ArchitectureOptions {
|
||||||
|
bitness: Bitness;
|
||||||
|
arch: ArchType;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibericaVersion {
|
||||||
|
downloadUrl: string;
|
||||||
|
version: string;
|
||||||
|
featureVersion: number;
|
||||||
|
interimVersion: number;
|
||||||
|
updateVersion: number;
|
||||||
|
buildVersion: number;
|
||||||
|
}
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
import { JavaBase } from '../base-installer';
|
||||||
|
import { JavaDownloadRelease, JavaInstallerOptions, JavaInstallerResults } from '../base-models';
|
||||||
|
import semver from 'semver';
|
||||||
|
import { extractJdkFile, getDownloadArchiveExtension, isVersionSatisfies } from '../../util';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
import { MicrosoftVersion, PlatformOptions } from './models';
|
||||||
|
import * as tc from '@actions/tool-cache';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
export class MicrosoftDistributions extends JavaBase {
|
||||||
|
constructor(installerOptions: JavaInstallerOptions) {
|
||||||
|
super('Microsoft', installerOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected async downloadTool(javaRelease: JavaDownloadRelease): Promise<JavaInstallerResults> {
|
||||||
|
core.info(
|
||||||
|
`Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...`
|
||||||
|
);
|
||||||
|
const javaArchivePath = await tc.downloadTool(javaRelease.url);
|
||||||
|
|
||||||
|
core.info(`Extracting Java archive...`);
|
||||||
|
const extension = getDownloadArchiveExtension();
|
||||||
|
const extractedJavaPath = await extractJdkFile(javaArchivePath, extension);
|
||||||
|
|
||||||
|
const archiveName = fs.readdirSync(extractedJavaPath)[0];
|
||||||
|
const archivePath = path.join(extractedJavaPath, archiveName);
|
||||||
|
|
||||||
|
const javaPath = await tc.cacheDir(
|
||||||
|
archivePath,
|
||||||
|
this.toolcacheFolderName,
|
||||||
|
this.getToolcacheVersionName(javaRelease.version),
|
||||||
|
this.architecture
|
||||||
|
);
|
||||||
|
|
||||||
|
return { version: javaRelease.version, path: javaPath };
|
||||||
|
}
|
||||||
|
|
||||||
|
protected async findPackageForDownload(range: string): Promise<JavaDownloadRelease> {
|
||||||
|
if (this.architecture !== 'x64' && this.architecture !== 'aarch64') {
|
||||||
|
throw new Error(`Unsupported architecture: ${this.architecture}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.stable) {
|
||||||
|
throw new Error('Early access versions are not supported');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.packageType !== 'jdk') {
|
||||||
|
throw new Error('Microsoft Build of OpenJDK provides only the `jdk` package type');
|
||||||
|
}
|
||||||
|
|
||||||
|
const availableVersionsRaw = await this.getAvailableVersions();
|
||||||
|
|
||||||
|
const opts = this.getPlatformOption();
|
||||||
|
const availableVersions = availableVersionsRaw.map(item => ({
|
||||||
|
url: `https://aka.ms/download-jdk/microsoft-jdk-${item.version.join('.')}-${opts.os}-${
|
||||||
|
this.architecture
|
||||||
|
}.${opts.archive}`,
|
||||||
|
version: this.convertVersionToSemver(item)
|
||||||
|
}));
|
||||||
|
|
||||||
|
const satisfiedVersion = availableVersions
|
||||||
|
.filter(item => isVersionSatisfies(range, item.version))
|
||||||
|
.sort((a, b) => -semver.compareBuild(a.version, b.version))[0];
|
||||||
|
|
||||||
|
if (!satisfiedVersion) {
|
||||||
|
const availableOptions = availableVersions.map(item => item.version).join(', ');
|
||||||
|
const availableOptionsMessage = availableOptions
|
||||||
|
? `\nAvailable versions: ${availableOptions}`
|
||||||
|
: '';
|
||||||
|
throw new Error(
|
||||||
|
`Could not find satisfied version for SemVer ${range}. ${availableOptionsMessage}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return satisfiedVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getAvailableVersions(): Promise<MicrosoftVersion[]> {
|
||||||
|
// TODO get these dynamically!
|
||||||
|
// We will need Microsoft to add an endpoint where we can query for versions.
|
||||||
|
const jdkVersions = [
|
||||||
|
{
|
||||||
|
version: [17, 0, 1, 12, 1]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: [16, 0, 2, 7, 1]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
// M1 is only supported for Java 16 & 17
|
||||||
|
if (process.platform !== 'darwin' || this.architecture !== 'aarch64') {
|
||||||
|
jdkVersions.push({
|
||||||
|
version: [11, 0, 13, 8, 1]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return jdkVersions;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getPlatformOption(
|
||||||
|
platform: NodeJS.Platform = process.platform /* for testing */
|
||||||
|
): PlatformOptions {
|
||||||
|
switch (platform) {
|
||||||
|
case 'darwin':
|
||||||
|
return { archive: 'tar.gz', os: 'macos' };
|
||||||
|
case 'win32':
|
||||||
|
return { archive: 'zip', os: 'windows' };
|
||||||
|
case 'linux':
|
||||||
|
return { archive: 'tar.gz', os: 'linux' };
|
||||||
|
default:
|
||||||
|
throw new Error(
|
||||||
|
`Platform '${platform}' is not supported. Supported platforms: 'darwin', 'linux', 'win32'`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private convertVersionToSemver(version: MicrosoftVersion): string {
|
||||||
|
const major = version.version[0];
|
||||||
|
const minor = version.version[1];
|
||||||
|
const patch = version.version[2];
|
||||||
|
return `${major}.${minor}.${patch}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
type OsVersions = 'linux' | 'macos' | 'windows';
|
||||||
|
type ArchiveType = 'tar.gz' | 'zip';
|
||||||
|
|
||||||
|
export interface PlatformOptions {
|
||||||
|
archive: ArchiveType;
|
||||||
|
os: OsVersions;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MicrosoftVersion {
|
||||||
|
downloadUrl?: string;
|
||||||
|
version: Array<number>;
|
||||||
|
}
|
||||||
+1
-2
@@ -39,8 +39,7 @@ export async function importKey(privateKey: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteKey(keyFingerprint: string) {
|
export async function deleteKey(keyFingerprint: string) {
|
||||||
await exec.exec('gpg', ['--batch', '--yes', '--delete-secret-keys', keyFingerprint], {
|
await exec.exec('gpg', ['--batch', '--yes', '--delete-secret-and-public-key', keyFingerprint], {
|
||||||
silent: true
|
silent: true
|
||||||
});
|
});
|
||||||
await exec.exec('gpg', ['--batch', '--yes', '--delete-keys', keyFingerprint], { silent: true });
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user