Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac032b0e7e | ||
|
|
8cd3284efc | ||
|
|
8f1dbd2ce5 | ||
|
|
d3b90f817c | ||
|
|
570f6b20e6 | ||
|
|
265e01895c | ||
|
|
c569e64c0b | ||
|
|
d189178615 | ||
|
|
ddf952dc27 | ||
|
|
2358846013 | ||
|
|
473558a7d4 | ||
|
|
10c2dc22fc | ||
|
|
238098cb83 | ||
|
|
911e3cee00 | ||
|
|
c6bf0c3fb6 | ||
|
|
eaee860665 | ||
|
|
d67b180a8e | ||
|
|
8ae40e7db9 | ||
|
|
4a419f5908 | ||
|
|
9180004c5f | ||
|
|
6a5fa2da72 | ||
|
|
578fd31702 | ||
|
|
85ea19c002 | ||
|
|
4a5400ac9a | ||
|
|
91fd4d0716 | ||
|
|
04ca584c1b | ||
|
|
8f41000162 | ||
|
|
d476798211 | ||
|
|
db8d619f32 | ||
|
|
830cd48f7f | ||
|
|
c871f91ee0 | ||
|
|
2f50b91043 |
96
.github/workflows/test.yml
vendored
96
.github/workflows/test.yml
vendored
@@ -20,13 +20,56 @@ jobs:
|
|||||||
npm install
|
npm install
|
||||||
- run: |
|
- run: |
|
||||||
npm run all
|
npm run all
|
||||||
|
test:
|
||||||
|
name: GraalVM
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
java-version: ['17', '20', 'dev']
|
||||||
|
distribution: ['graalvm', 'graalvm-community']
|
||||||
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
|
include:
|
||||||
|
- java-version: '17.0.7'
|
||||||
|
distribution: ''
|
||||||
|
os: ubuntu-latest
|
||||||
|
- java-version: 'dev'
|
||||||
|
distribution: ''
|
||||||
|
os: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Run setup-graalvm action
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
java-version: ${{ matrix.java-version }}
|
||||||
|
distribution: ${{ matrix.distribution }}
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Check environment
|
||||||
|
run: |
|
||||||
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
||||||
|
if [[ "${{ matrix.java-version }}" == "dev" ]]; then
|
||||||
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12
|
||||||
|
else
|
||||||
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23
|
||||||
|
fi
|
||||||
|
echo "JAVA_HOME: $JAVA_HOME"
|
||||||
|
java --version
|
||||||
|
java --version | grep "GraalVM" || exit 34
|
||||||
|
native-image --version
|
||||||
|
if: runner.os != 'Windows'
|
||||||
|
- name: Check Windows environment
|
||||||
|
run: |
|
||||||
|
echo "GRAALVM_HOME: $env:GRAALVM_HOME"
|
||||||
|
echo "JAVA_HOME: $env:JAVA_HOME"
|
||||||
|
java --version
|
||||||
|
native-image --version
|
||||||
test-ce: # make sure the action works on a clean machine without building
|
test-ce: # make sure the action works on a clean machine without building
|
||||||
|
needs: test
|
||||||
name: CE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
name: CE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
version: ['latest', 'dev']
|
version: ['latest', 'dev']
|
||||||
java-version: ['19', '20']
|
java-version: ['17', '20']
|
||||||
components: ['native-image']
|
components: ['native-image']
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
exclude:
|
exclude:
|
||||||
@@ -63,16 +106,18 @@ jobs:
|
|||||||
- name: Check environment
|
- name: Check environment
|
||||||
run: |
|
run: |
|
||||||
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
||||||
if [[ "${{ matrix.version }}" == "dev" ]]; then
|
if [[ "${{ matrix.version }}" == "dev" ]] && [[ "${{ matrix.java-version }}" == "dev" ]]; then
|
||||||
[[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12
|
||||||
else
|
else
|
||||||
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23
|
||||||
fi
|
fi
|
||||||
echo "JAVA_HOME: $JAVA_HOME"
|
echo "JAVA_HOME: $JAVA_HOME"
|
||||||
java --version
|
java --version
|
||||||
java --version | grep "GraalVM CE" || exit 34
|
java --version | grep "GraalVM" || exit 34
|
||||||
native-image --version
|
native-image --version
|
||||||
gu list
|
if [[ "${{ matrix.java-version }}" != "dev" ]]; then
|
||||||
|
gu list
|
||||||
|
fi
|
||||||
if: runner.os != 'Windows'
|
if: runner.os != 'Windows'
|
||||||
- name: Check Windows environment
|
- name: Check Windows environment
|
||||||
run: |
|
run: |
|
||||||
@@ -83,21 +128,22 @@ jobs:
|
|||||||
gu.cmd remove native-image
|
gu.cmd remove native-image
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
test-ee:
|
test-ee:
|
||||||
|
needs: test
|
||||||
name: EE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
name: EE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
version: ['latest']
|
version: ['latest']
|
||||||
java-version: ['19']
|
java-version: ['17']
|
||||||
components: ['native-image']
|
components: ['native-image']
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
include:
|
include:
|
||||||
- version: '22.3.0'
|
- version: '22.3.3'
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
components: 'native-image'
|
components: 'native-image'
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
- version: '22.3.0'
|
- version: '22.3.3'
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
components: 'native-image'
|
components: 'native-image'
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
@@ -117,7 +163,7 @@ jobs:
|
|||||||
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12
|
||||||
echo "JAVA_HOME: $JAVA_HOME"
|
echo "JAVA_HOME: $JAVA_HOME"
|
||||||
java --version
|
java --version
|
||||||
java --version | grep "GraalVM EE" || exit 23
|
java --version | grep -e "GraalVM EE" -e "Oracle GraalVM" || exit 23
|
||||||
native-image --version
|
native-image --version
|
||||||
gu list
|
gu list
|
||||||
if: runner.os != 'Windows'
|
if: runner.os != 'Windows'
|
||||||
@@ -130,19 +176,31 @@ jobs:
|
|||||||
gu.cmd remove native-image
|
gu.cmd remove native-image
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
test-mandrel:
|
test-mandrel:
|
||||||
|
needs: test
|
||||||
name: ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
name: ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
version: ['mandrel-22.2.0.0-Final', 'mandrel-latest']
|
version: ['mandrel-22.2.0.0-Final', 'mandrel-latest']
|
||||||
java-version: ['17']
|
java-version: ['17']
|
||||||
|
distribution: ['mandrel']
|
||||||
os: [windows-latest, ubuntu-latest]
|
os: [windows-latest, ubuntu-latest]
|
||||||
|
include:
|
||||||
|
- version: 'mandrel-latest'
|
||||||
|
java-version: '17'
|
||||||
|
distribution: '' # test empty distribution for backward compatibility
|
||||||
|
os: ubuntu-latest
|
||||||
|
exclude: # temporarily disable Mandrel latest builds on Windows due to unavailability
|
||||||
|
- version: 'mandrel-latest'
|
||||||
|
java-version: '17'
|
||||||
|
os: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Run setup-graalvm action
|
- name: Run setup-graalvm action
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: ${{ matrix.version }}
|
version: ${{ matrix.version }}
|
||||||
|
distribution: ${{ matrix.distribution }}
|
||||||
java-version: ${{ matrix.java-version }}
|
java-version: ${{ matrix.java-version }}
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Check environment
|
- name: Check environment
|
||||||
@@ -151,6 +209,7 @@ jobs:
|
|||||||
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12
|
||||||
echo "JAVA_HOME: $JAVA_HOME"
|
echo "JAVA_HOME: $JAVA_HOME"
|
||||||
java --version
|
java --version
|
||||||
|
java --version | grep "Temurin" || exit 23
|
||||||
native-image --version
|
native-image --version
|
||||||
if: runner.os != 'Windows'
|
if: runner.os != 'Windows'
|
||||||
- name: Check Windows environment
|
- name: Check Windows environment
|
||||||
@@ -171,9 +230,8 @@ jobs:
|
|||||||
- name: Run setup-graalvm action
|
- name: Run setup-graalvm action
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: 'dev'
|
|
||||||
java-version: 'dev'
|
java-version: 'dev'
|
||||||
components: 'native-image'
|
distribution: 'graalvm-community'
|
||||||
native-image-job-reports: 'true'
|
native-image-job-reports: 'true'
|
||||||
native-image-pr-reports: 'true'
|
native-image-pr-reports: 'true'
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -184,8 +242,8 @@ jobs:
|
|||||||
native-image HelloWorld
|
native-image HelloWorld
|
||||||
./helloworld
|
./helloworld
|
||||||
test-native-image-windows-msvc:
|
test-native-image-windows-msvc:
|
||||||
name: native-image on windows-2019
|
name: native-image on windows-2022
|
||||||
runs-on: windows-2019
|
runs-on: windows-2022
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
pull-requests: write # for `native-image-pr-reports` option
|
pull-requests: write # for `native-image-pr-reports` option
|
||||||
@@ -194,9 +252,8 @@ jobs:
|
|||||||
- name: Run setup-graalvm action
|
- name: Run setup-graalvm action
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: '22.3.1'
|
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
components: 'native-image'
|
distribution: 'graalvm'
|
||||||
native-image-job-reports: 'true'
|
native-image-job-reports: 'true'
|
||||||
native-image-pr-reports: 'true'
|
native-image-pr-reports: 'true'
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -217,9 +274,8 @@ jobs:
|
|||||||
- name: Run setup-graalvm action
|
- name: Run setup-graalvm action
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: 'dev'
|
|
||||||
java-version: 'dev'
|
java-version: 'dev'
|
||||||
components: 'native-image'
|
distribution: 'graalvm-community'
|
||||||
native-image-musl: 'true'
|
native-image-musl: 'true'
|
||||||
native-image-job-reports: 'true'
|
native-image-job-reports: 'true'
|
||||||
native-image-pr-reports: 'true'
|
native-image-pr-reports: 'true'
|
||||||
@@ -241,9 +297,9 @@ jobs:
|
|||||||
- name: Run setup-graalvm action
|
- name: Run setup-graalvm action
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: 'latest'
|
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
components: 'espresso,llvm-toolchain,native-image,nodejs,python,R,ruby,wasm'
|
distribution: 'graalvm'
|
||||||
|
components: 'espresso,llvm-toolchain,native-image,nodejs,python,ruby,wasm'
|
||||||
set-java-home: 'false'
|
set-java-home: 'false'
|
||||||
native-image-job-reports: 'true'
|
native-image-job-reports: 'true'
|
||||||
native-image-pr-reports: 'true'
|
native-image-pr-reports: 'true'
|
||||||
@@ -264,8 +320,6 @@ jobs:
|
|||||||
[[ $(which node) == *"graalvm"* ]] || exit 45
|
[[ $(which node) == *"graalvm"* ]] || exit 45
|
||||||
node --version
|
node --version
|
||||||
graalpy --version
|
graalpy --version
|
||||||
[[ $(which R) == *"graalvm"* ]] || exit 56
|
|
||||||
R --version
|
|
||||||
truffleruby --version
|
truffleruby --version
|
||||||
wasm --version
|
wasm --version
|
||||||
- name: Build HelloWorld.java with GraalVM Native Image
|
- name: Build HelloWorld.java with GraalVM Native Image
|
||||||
@@ -286,4 +340,4 @@ jobs:
|
|||||||
bundle exec rake test
|
bundle exec rake test
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
- name: Remove components
|
- name: Remove components
|
||||||
run: gu remove espresso llvm-toolchain nodejs python R ruby wasm
|
run: gu remove espresso llvm-toolchain nodejs python ruby wasm
|
||||||
|
|||||||
102
README.md
102
README.md
@@ -1,18 +1,46 @@
|
|||||||
# GitHub Action for GraalVM [](https://github.com/graalvm/setup-graalvm/actions/workflows/test.yml)
|
# GitHub Action for GraalVM [](https://github.com/graalvm/setup-graalvm/actions/workflows/test.yml)
|
||||||
This GitHub action sets up GraalVM [Community Edition (CE)][repo] or [Enterprise Edition (EE)][graalvm-ee] as well as GraalVM components such as [Native Image][native-image] and [Truffle languages][truffle-languages].
|
This GitHub action sets up [Oracle GraalVM][graalvm-medium], GraalVM [Community Edition (CE)][repo], [Enterprise Edition (EE)][graalvm-ee], or [Mandrel][mandrel], as well as [Native Image][native-image] and GraalVM components such as [Truffle languages][truffle-languages].
|
||||||
|
|
||||||
## Key Features
|
## Key Features
|
||||||
|
|
||||||
This action:
|
This action:
|
||||||
|
|
||||||
- supports GraalVM Community Edition (CE) [releases], [dev builds][dev-builds], GraalVM Enterprise Edition (EE) [releases][graalvm-ee] (set [`gds-token`](#options)) 22.1.0 and later, and [Mandrel][mandrel] (see [options](#options))
|
- supports Oracle GraalVM [releases][graalvm-dl], GraalVM Community Edition (CE) [releases], [dev builds][dev-builds], GraalVM Enterprise Edition (EE) [releases][graalvm-ee] (set [`gds-token`](#options)) 22.1.0 and later, and [Mandrel][mandrel] (see [Options](#options))
|
||||||
- has built-in support for GraalVM components and the [GraalVM Updater][gu]
|
|
||||||
- exports a `$GRAALVM_HOME` environment variable
|
- exports a `$GRAALVM_HOME` environment variable
|
||||||
- adds `$GRAALVM_HOME/bin` to the `$PATH` environment variable<br>(Truffle languages and tools can be invoked directly)
|
- adds `$GRAALVM_HOME/bin` to the `$PATH` environment variable<br>(Native Image, Truffle languages, and tools can be invoked directly)
|
||||||
- sets `$JAVA_HOME` to `$GRAALVM_HOME` by default<br>(can be disabled via `set-java-home: 'false'`, see [options](#options))
|
- sets `$JAVA_HOME` to `$GRAALVM_HOME` by default<br>(can be disabled via `set-java-home: 'false'`, see [Options](#options))
|
||||||
- supports `amd64` and `aarch64` (selected automatically, `aarch64` requires a [self-hosted runner][gha-self-hosted-runners])
|
- supports `x64` and `aarch64` (selected automatically, `aarch64` requires a [self-hosted runner][gha-self-hosted-runners])
|
||||||
- sets up Windows environments with build tools using [vcvarsall.bat][vcvarsall]
|
|
||||||
- supports dependency caching for Apache Maven, Gradle, and sbt (see [`cache` option](#options))
|
- supports dependency caching for Apache Maven, Gradle, and sbt (see [`cache` option](#options))
|
||||||
|
- sets up Windows environments with build tools using [vcvarsall.bat][vcvarsall]
|
||||||
|
- has built-in support for GraalVM components and the [GraalVM Updater][gu]
|
||||||
|
|
||||||
|
|
||||||
|
## Migrating from GraalVM 22.3 or Earlier to the New GraalVM for JDK 17 and Later
|
||||||
|
|
||||||
|
The new [GraalVM for JDK 17 and JDK 20 release](https://medium.com/graalvm/a-new-graalvm-release-and-new-free-license-4aab483692f5) aligns the GraalVM version scheme with OpenJDK.
|
||||||
|
As a result, this action no longer requires the `version` option to select a specific GraalVM version.
|
||||||
|
At the same time, it introduces a new `distribution` option to select a specific GraalVM distribution (`graalvm`, `graalvm-community`, or `mandrel`).
|
||||||
|
Therefore, to migrate your workflow to use the latest GraalVM release, replace the `version` with the `distribution` option in the workflow `yml` config, for example:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
# ...
|
||||||
|
- uses: graalvm/setup-graalvm@v1
|
||||||
|
with:
|
||||||
|
java-version: '17'
|
||||||
|
version: '22.3.2' # Old 'version' option for the GraalVM version
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
|
can be replaced with:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
# ...
|
||||||
|
- uses: graalvm/setup-graalvm@v1
|
||||||
|
with:
|
||||||
|
java-version: '17.0.7' # for a specific JDK 17; or '17' for the latest JDK 17
|
||||||
|
distribution: 'graalvm' # New 'distribution' option
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Templates
|
## Templates
|
||||||
@@ -20,7 +48,7 @@ This action:
|
|||||||
### Quickstart Template
|
### Quickstart Template
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
name: GraalVM Community Edition build
|
name: GraalVM build
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -29,17 +57,19 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: graalvm/setup-graalvm@v1
|
- uses: graalvm/setup-graalvm@v1
|
||||||
with:
|
with:
|
||||||
version: 'latest'
|
java-version: '17.0.7'
|
||||||
java-version: '17'
|
distribution: 'graalvm' # See 'Options' for all available distributions
|
||||||
components: 'native-image'
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Example step
|
- name: Example step
|
||||||
run: |
|
run: |
|
||||||
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
||||||
echo "JAVA_HOME: $JAVA_HOME"
|
echo "JAVA_HOME: $JAVA_HOME"
|
||||||
java --version
|
java --version
|
||||||
gu --version
|
|
||||||
native-image --version
|
native-image --version
|
||||||
|
- name: Example step using Maven plugin # https://graalvm.github.io/native-build-tools/latest/maven-plugin.html
|
||||||
|
run: mvn -Pnative package
|
||||||
|
- name: Example step using Gradle plugin # https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html
|
||||||
|
run: gradlew nativeCompile
|
||||||
```
|
```
|
||||||
|
|
||||||
### Building a HelloWorld with GraalVM Native Image on Different Platforms
|
### Building a HelloWorld with GraalVM Native Image on Different Platforms
|
||||||
@@ -59,9 +89,8 @@ jobs:
|
|||||||
|
|
||||||
- uses: graalvm/setup-graalvm@v1
|
- uses: graalvm/setup-graalvm@v1
|
||||||
with:
|
with:
|
||||||
version: '22.3.0'
|
java-version: '17.0.7'
|
||||||
java-version: '17'
|
distribution: 'graalvm'
|
||||||
components: 'native-image'
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
native-image-job-reports: 'true'
|
native-image-job-reports: 'true'
|
||||||
|
|
||||||
@@ -79,7 +108,29 @@ jobs:
|
|||||||
path: helloworld*
|
path: helloworld*
|
||||||
```
|
```
|
||||||
|
|
||||||
### Basic GraalVM Enterprise Edition Template
|
<details>
|
||||||
|
<summary><h4>Template for older GraalVM releases</h4></summary>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
name: GraalVM build
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: graalvm/setup-graalvm@v1
|
||||||
|
with:
|
||||||
|
version: '22.3.2' # GraalVM version
|
||||||
|
java-version: '17'
|
||||||
|
components: 'native-image'
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h4>Template for GraalVM Enterprise Edition</h4></summary>
|
||||||
|
|
||||||
#### Prerequisites
|
#### Prerequisites
|
||||||
|
|
||||||
@@ -109,22 +160,24 @@ jobs:
|
|||||||
native-image --version
|
native-image --version
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
|-----------------|:--------:|-------------|
|
|-----------------|:--------:|-------------|
|
||||||
| `version`<br>*(required)* | n/a | `X.Y.Z` (e.g., `22.3.0`) for a specific [GraalVM release][releases]<br>`latest` for [latest stable release][stable],<br>`dev` for [latest dev build][dev-build],<br>`mandrel-X.Y.Z` (e.g., `mandrel-21.3.0.0-Final`) for a specific [Mandrel release][mandrel-releases],<br>`mandrel-latest` for [latest Mandrel stable release][mandrel-stable]. |
|
| `java-version`<br>*(required)* | n/a | `'17.0.7'` or `'20.0.1'` for a specific Java version, `'dev'` for a dev build with the latest Java version available.<br>(`'8'`, `'11'`, `'16'`, `'19'` are supported for older GraalVM releases.) |
|
||||||
| `gds-token` | `''` | Download token for the GraalVM Download Service. If a non-empty token is provided, the action will set up GraalVM Enterprise Edition (see [GraalVM EE template](#basic-graalvm-enterprise-edition-template)). |
|
| `distribution` | `''` | GraalVM distribution (`graalvm` for Oracle GraalVM, `graalvm-community` for GraalVM Community Edition, `mandrel` for Mandrel). |
|
||||||
| `java-version`<br>*(required)* | n/a | `'17'` or `'19'` for a specific Java version, `'dev'` for the highest Java version available (requires `version: 'dev'`).<br>(`'8'`, `'11'`, `'16'` are supported for older GraalVM releases.) |
|
| `github-token` | `'${{ github.token }}'` | Token for communication with the GitHub API. Please set this to `${{ secrets.GITHUB_TOKEN }}` (see [templates](#templates)) to allow the action to authenticate with the GitHub API, which helps reduce rate-limiting issues. |
|
||||||
| `components` | `''` | Comma-spearated list of GraalVM components (e.g., `native-image` or `ruby,nodejs`) that will be installed by the [GraalVM Updater][gu]. |
|
|
||||||
| `github-token` | `'${{ github.token }}'` | Token for communication with the GitHub API. Please set to `${{ secrets.GITHUB_TOKEN }}` (see [templates](#templates)) to allow the action to authenticate with the GitHub API, which helps to reduce rate limiting issues. |
|
|
||||||
| `set-java-home` | `'true'` | If set to `'true'`, instructs the action to set `$JAVA_HOME` to the path of the GraalVM installation. Overrides any previous action or command that sets `$JAVA_HOME`. |
|
| `set-java-home` | `'true'` | If set to `'true'`, instructs the action to set `$JAVA_HOME` to the path of the GraalVM installation. Overrides any previous action or command that sets `$JAVA_HOME`. |
|
||||||
| `cache` | `''` | Name of the build platform to cache dependencies. It can be `'maven'`, `'gradle'`, or `'sbt'` and works the same way as described in [actions/setup-java][setup-java-caching]. |
|
| `cache` | `''` | Name of the build platform to cache dependencies. Turned off by default (`''`). It can also be `'maven'`, `'gradle'`, or `'sbt'` and works the same way as described in [actions/setup-java][setup-java-caching]. |
|
||||||
| `check-for-updates` | `'true'` | [Annotate jobs][gha-annotations] with update notifications, for example, when a new GraalVM release is available. |
|
| `check-for-updates` | `'true'` | [Annotate jobs][gha-annotations] with update notifications, for example when a new GraalVM release is available. |
|
||||||
| `native-image-musl` | `'false'` | If set to `'true'`, sets up [musl] to build [static binaries][native-image-static] with GraalVM Native Image *(Linux only)*. [Example usage][native-image-musl-build] (be sure to replace `uses: ./` with `uses: graalvm/setup-graalvm@v1`). |
|
| `native-image-musl` | `'false'` | If set to `'true'`, sets up [musl] to build [static binaries][native-image-static] with GraalVM Native Image *(Linux only)*. [Example usage][native-image-musl-build] (be sure to replace `uses: ./` with `uses: graalvm/setup-graalvm@v1`). |
|
||||||
| `native-image-job-reports` *) | `'false'` | If set to `'true'`, post a job summary containing a Native Image build report. |
|
| `native-image-job-reports` *) | `'false'` | If set to `'true'`, post a job summary containing a Native Image build report. |
|
||||||
| `native-image-pr-reports` *) | `'false'` | If set to `'true'`, post a comment containing a Native Image build report on pull requests. Requires `write` permissions for the [`pull-requests` scope][gha-permissions]. |
|
| `native-image-pr-reports` *) | `'false'` | If set to `'true'`, post a comment containing a Native Image build report on pull requests. Requires `write` permissions for the [`pull-requests` scope][gha-permissions]. |
|
||||||
|
| `components` | `''` | Comma-separated list of GraalVM components (e.g., `native-image` or `ruby,nodejs`) that will be installed by the [GraalVM Updater][gu]. |
|
||||||
|
| `version` | `''` | `X.Y.Z` (e.g., `22.3.0`) for a specific [GraalVM release][releases] up to `22.3.2`<br>`mandrel-X.Y.Z` (e.g., `mandrel-21.3.0.0-Final`) for a specific [Mandrel release][mandrel-releases],<br>`mandrel-latest` for [latest Mandrel stable release][mandrel-stable]. |
|
||||||
|
| `gds-token` | `''` | Download token for the GraalVM Download Service. If a non-empty token is provided, the action will set up GraalVM Enterprise Edition (see [GraalVM EE template](#template-for-graalvm-enterprise-edition)). |
|
||||||
|
|
||||||
**) Make sure that Native Image is used only once per build job. Otherwise, the report is only generated for the last Native Image build.*
|
**) Make sure that Native Image is used only once per build job. Otherwise, the report is only generated for the last Native Image build.*
|
||||||
|
|
||||||
@@ -143,6 +196,9 @@ Only pull requests from committers that can be verified as having signed the OCA
|
|||||||
[gha-secrets]: https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository
|
[gha-secrets]: https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository
|
||||||
[gha-self-hosted-runners]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners
|
[gha-self-hosted-runners]: https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners
|
||||||
[gu]: https://www.graalvm.org/reference-manual/graalvm-updater/
|
[gu]: https://www.graalvm.org/reference-manual/graalvm-updater/
|
||||||
|
[graalvm]: https://www.graalvm.org/
|
||||||
|
[graalvm-dl]: https://www.oracle.com/java/technologies/downloads/
|
||||||
|
[graalvm-medium]: https://medium.com/graalvm/a-new-graalvm-release-and-new-free-license-4aab483692f5
|
||||||
[graalvm-ee]: https://www.oracle.com/downloads/graalvm-downloads.html
|
[graalvm-ee]: https://www.oracle.com/downloads/graalvm-downloads.html
|
||||||
[mandrel]: https://github.com/graalvm/mandrel
|
[mandrel]: https://github.com/graalvm/mandrel
|
||||||
[mandrel-releases]: https://github.com/graalvm/mandrel/releases
|
[mandrel-releases]: https://github.com/graalvm/mandrel/releases
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import {downloadGraalVMEE, fetchArtifact} from '../src/gds'
|
import {downloadGraalVMEELegacy, fetchArtifact} from '../src/gds'
|
||||||
import {expect, test} from '@jest/globals'
|
import {expect, test} from '@jest/globals'
|
||||||
|
|
||||||
const TEST_USER_AGENT = 'GraalVMGitHubActionTest/1.0.4'
|
const TEST_USER_AGENT = 'GraalVMGitHubActionTest/1.0.4'
|
||||||
@@ -32,13 +32,15 @@ test('fetch artifacts', async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
test('errors when downloading artifacts', async () => {
|
test('errors when downloading artifacts', async () => {
|
||||||
await expect(downloadGraalVMEE('invalid', '22.1.0', '11')).rejects.toThrow(
|
await expect(
|
||||||
|
downloadGraalVMEELegacy('invalid', '22.1.0', '11')
|
||||||
|
).rejects.toThrow(
|
||||||
'The provided "gds-token" was rejected (reason: "Invalid download token", opc-request-id: /'
|
'The provided "gds-token" was rejected (reason: "Invalid download token", opc-request-id: /'
|
||||||
)
|
)
|
||||||
await expect(downloadGraalVMEE('invalid', '1.0.0', '11')).rejects.toThrow(
|
await expect(
|
||||||
'Unable to find JDK11-based GraalVM EE 1.0.0'
|
downloadGraalVMEELegacy('invalid', '1.0.0', '11')
|
||||||
)
|
).rejects.toThrow('Unable to find JDK11-based GraalVM EE 1.0.0')
|
||||||
await expect(downloadGraalVMEE('invalid', '22.1.0', '1')).rejects.toThrow(
|
await expect(
|
||||||
'Unable to find JDK1-based GraalVM EE 22.1.0'
|
downloadGraalVMEELegacy('invalid', '22.1.0', '1')
|
||||||
)
|
).rejects.toThrow('Unable to find JDK1-based GraalVM EE 22.1.0')
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ test('request invalid version/javaVersion', async () => {
|
|||||||
await graalvm.setUpGraalVMRelease('', combination[0], combination[1])
|
await graalvm.setUpGraalVMRelease('', combination[0], combination[1])
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (!(err instanceof Error)) {
|
if (!(err instanceof Error)) {
|
||||||
fail(`Unexpected non-Erro: ${err}`)
|
fail(`Unexpected non-Error: ${err}`)
|
||||||
}
|
}
|
||||||
error = err
|
error = err
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,23 @@ test('request invalid version/javaVersion', async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
test('find version/javaVersion', async () => {
|
test('find version/javaVersion', async () => {
|
||||||
|
// Make sure the action can find the latest Java version for known major versions
|
||||||
|
for (var majorJavaVersion of ['17', '20']) {
|
||||||
|
await graalvm.findLatestGraalVMJDKCEJavaVersion(majorJavaVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
let error = new Error('unexpected')
|
||||||
|
try {
|
||||||
|
await graalvm.findLatestGraalVMJDKCEJavaVersion('11')
|
||||||
|
fail('Should not find Java version for 11')
|
||||||
|
} catch (err) {
|
||||||
|
if (!(err instanceof Error)) {
|
||||||
|
fail(`Unexpected non-Error: ${err}`)
|
||||||
|
}
|
||||||
|
error = err
|
||||||
|
}
|
||||||
|
expect(error.message).toContain('Unable to find the latest Java version for')
|
||||||
|
|
||||||
const latestRelease = await getTaggedRelease(
|
const latestRelease = await getTaggedRelease(
|
||||||
GRAALVM_RELEASES_REPO,
|
GRAALVM_RELEASES_REPO,
|
||||||
'vm-22.3.1'
|
'vm-22.3.1'
|
||||||
@@ -40,7 +57,7 @@ test('find version/javaVersion', async () => {
|
|||||||
const latestJavaVersion = findHighestJavaVersion(latestRelease, latestVersion)
|
const latestJavaVersion = findHighestJavaVersion(latestRelease, latestVersion)
|
||||||
expect(latestJavaVersion).not.toBe('')
|
expect(latestJavaVersion).not.toBe('')
|
||||||
|
|
||||||
let error = new Error('unexpected')
|
error = new Error('unexpected')
|
||||||
try {
|
try {
|
||||||
const invalidRelease = {...latestRelease, tag_name: 'invalid'}
|
const invalidRelease = {...latestRelease, tag_name: 'invalid'}
|
||||||
findGraalVMVersion(invalidRelease)
|
findGraalVMVersion(invalidRelease)
|
||||||
@@ -56,7 +73,7 @@ test('find version/javaVersion', async () => {
|
|||||||
findHighestJavaVersion(latestRelease, 'invalid')
|
findHighestJavaVersion(latestRelease, 'invalid')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (!(err instanceof Error)) {
|
if (!(err instanceof Error)) {
|
||||||
fail(`Unexpected non-Erro: ${err}`)
|
fail(`Unexpected non-Error: ${err}`)
|
||||||
}
|
}
|
||||||
error = err
|
error = err
|
||||||
}
|
}
|
||||||
|
|||||||
21
action.yml
21
action.yml
@@ -1,19 +1,17 @@
|
|||||||
name: 'GitHub Action for GraalVM'
|
name: 'GitHub Action for GraalVM'
|
||||||
description: 'Set up a specific version of GraalVM Community Edition (CE) or Enterprise Edition (EE)'
|
description: 'Set up a specific version of the GraalVM JDK and add the command-line tools to the PATH'
|
||||||
author: 'GraalVM Community'
|
author: 'GraalVM Community'
|
||||||
branding:
|
branding:
|
||||||
icon: 'terminal'
|
icon: 'terminal'
|
||||||
color: 'blue'
|
color: 'blue'
|
||||||
inputs:
|
inputs:
|
||||||
version:
|
|
||||||
required: true
|
|
||||||
description: 'GraalVM version (release, latest, dev).'
|
|
||||||
gds-token:
|
|
||||||
required: false
|
|
||||||
description: 'Download token for the GraalVM Download Service. If provided, the action will set up GraalVM Enterprise Edition.'
|
|
||||||
java-version:
|
java-version:
|
||||||
required: true
|
required: true
|
||||||
description: 'Java version (11 or 17, 8 or 16 for older releases).'
|
description: 'Java version. See examples of supported syntax in the README file.'
|
||||||
|
distribution:
|
||||||
|
description: 'GraalVM distribution. See the list of available distributions in the README file.'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
components:
|
components:
|
||||||
required: false
|
required: false
|
||||||
description: 'Comma-separated list of GraalVM components to be installed.'
|
description: 'Comma-separated list of GraalVM components to be installed.'
|
||||||
@@ -45,6 +43,13 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
description: 'Post a comment containing a Native Image build report on pull requests.'
|
description: 'Post a comment containing a Native Image build report on pull requests.'
|
||||||
default: 'false'
|
default: 'false'
|
||||||
|
version:
|
||||||
|
required: false
|
||||||
|
description: 'GraalVM version (release, latest, dev).'
|
||||||
|
default: ''
|
||||||
|
gds-token:
|
||||||
|
required: false
|
||||||
|
description: 'Download token for the GraalVM Download Service. If provided, the action will set up GraalVM Enterprise Edition.'
|
||||||
outputs:
|
outputs:
|
||||||
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'
|
||||||
|
|||||||
1999
dist/cleanup/index.js
generated
vendored
1999
dist/cleanup/index.js
generated
vendored
File diff suppressed because it is too large
Load Diff
2366
dist/main/index.js
generated
vendored
2366
dist/main/index.js
generated
vendored
File diff suppressed because it is too large
Load Diff
190
package-lock.json
generated
190
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-graalvm",
|
"name": "setup-graalvm",
|
||||||
"version": "1.0.12",
|
"version": "1.1.3",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "setup-graalvm",
|
"name": "setup-graalvm",
|
||||||
"version": "1.0.12",
|
"version": "1.1.3",
|
||||||
"license": "UPL",
|
"license": "UPL",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^3.0.4",
|
"@actions/cache": "^3.0.4",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"@actions/tool-cache": "^1.7.1",
|
"@actions/tool-cache": "^1.7.1",
|
||||||
"@octokit/core": "^3.5.1",
|
"@octokit/core": "^3.5.1",
|
||||||
"@octokit/types": "^6.34.0",
|
"@octokit/types": "^6.34.0",
|
||||||
"semver": "^7.3.8",
|
"semver": "^7.5.2",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -74,9 +74,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/cache/node_modules/semver": {
|
"node_modules/@actions/cache/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
}
|
}
|
||||||
@@ -170,9 +170,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/tool-cache/node_modules/semver": {
|
"node_modules/@actions/tool-cache/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
}
|
}
|
||||||
@@ -320,15 +320,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@azure/ms-rest-js": {
|
"node_modules/@azure/ms-rest-js": {
|
||||||
"version": "2.6.6",
|
"version": "2.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.6.6.tgz",
|
"resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz",
|
||||||
"integrity": "sha512-WYIda8VvrkZE68xHgOxUXvjThxNf1nnGPPe0rAljqK5HJHIZ12Pi3YhEDOn3Ge7UnwaaM3eFO0VtAy4nGVI27Q==",
|
"integrity": "sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/core-auth": "^1.1.4",
|
"@azure/core-auth": "^1.1.4",
|
||||||
"abort-controller": "^3.0.0",
|
"abort-controller": "^3.0.0",
|
||||||
"form-data": "^2.5.0",
|
"form-data": "^2.5.0",
|
||||||
"node-fetch": "^2.6.7",
|
"node-fetch": "^2.6.7",
|
||||||
"tough-cookie": "^3.0.1",
|
|
||||||
"tslib": "^1.10.0",
|
"tslib": "^1.10.0",
|
||||||
"tunnel": "0.0.6",
|
"tunnel": "0.0.6",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
@@ -416,9 +415,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@babel/core/node_modules/semver": {
|
"node_modules/@babel/core/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -459,9 +458,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
|
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -3268,9 +3267,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-import/node_modules/semver": {
|
"node_modules/eslint-plugin-import/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -3331,9 +3330,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-jsx-a11y/node_modules/semver": {
|
"node_modules/eslint-plugin-jsx-a11y/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -4168,14 +4167,6 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ip-regex": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/is-arguments": {
|
"node_modules/is-arguments": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
||||||
@@ -4550,9 +4541,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/istanbul-lib-instrument/node_modules/semver": {
|
"node_modules/istanbul-lib-instrument/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -5688,9 +5679,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/make-dir/node_modules/semver": {
|
"node_modules/make-dir/node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -6279,15 +6270,11 @@
|
|||||||
"node": ">= 6"
|
"node": ">= 6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/psl": {
|
|
||||||
"version": "1.9.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
|
||||||
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
|
|
||||||
},
|
|
||||||
"node_modules/punycode": {
|
"node_modules/punycode": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
||||||
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
|
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
@@ -6490,9 +6477,9 @@
|
|||||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.4.0",
|
"version": "7.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
|
||||||
"integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
|
"integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lru-cache": "^6.0.0"
|
"lru-cache": "^6.0.0"
|
||||||
},
|
},
|
||||||
@@ -6834,19 +6821,6 @@
|
|||||||
"node": ">=8.0"
|
"node": ">=8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tough-cookie": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
|
|
||||||
"dependencies": {
|
|
||||||
"ip-regex": "^2.1.0",
|
|
||||||
"psl": "^1.1.28",
|
|
||||||
"punycode": "^2.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tr46": {
|
"node_modules/tr46": {
|
||||||
"version": "0.0.3",
|
"version": "0.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
@@ -7195,9 +7169,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/word-wrap": {
|
"node_modules/word-wrap": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||||
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
|
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -7349,9 +7323,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"version": "3.4.0",
|
"version": "3.4.0",
|
||||||
@@ -7444,9 +7418,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"version": "3.4.0",
|
"version": "3.4.0",
|
||||||
@@ -7561,15 +7535,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@azure/ms-rest-js": {
|
"@azure/ms-rest-js": {
|
||||||
"version": "2.6.6",
|
"version": "2.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.6.6.tgz",
|
"resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz",
|
||||||
"integrity": "sha512-WYIda8VvrkZE68xHgOxUXvjThxNf1nnGPPe0rAljqK5HJHIZ12Pi3YhEDOn3Ge7UnwaaM3eFO0VtAy4nGVI27Q==",
|
"integrity": "sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@azure/core-auth": "^1.1.4",
|
"@azure/core-auth": "^1.1.4",
|
||||||
"abort-controller": "^3.0.0",
|
"abort-controller": "^3.0.0",
|
||||||
"form-data": "^2.5.0",
|
"form-data": "^2.5.0",
|
||||||
"node-fetch": "^2.6.7",
|
"node-fetch": "^2.6.7",
|
||||||
"tough-cookie": "^3.0.1",
|
|
||||||
"tslib": "^1.10.0",
|
"tslib": "^1.10.0",
|
||||||
"tunnel": "0.0.6",
|
"tunnel": "0.0.6",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
@@ -7643,9 +7616,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7676,9 +7649,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9823,9 +9796,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9864,9 +9837,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10465,11 +10438,6 @@
|
|||||||
"side-channel": "^1.0.4"
|
"side-channel": "^1.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ip-regex": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw=="
|
|
||||||
},
|
|
||||||
"is-arguments": {
|
"is-arguments": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
||||||
@@ -10724,9 +10692,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11609,9 +11577,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12033,15 +12001,11 @@
|
|||||||
"sisteransi": "^1.0.5"
|
"sisteransi": "^1.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"psl": {
|
|
||||||
"version": "1.9.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
|
||||||
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
|
|
||||||
},
|
|
||||||
"punycode": {
|
"punycode": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
||||||
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
|
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"pure-rand": {
|
"pure-rand": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
@@ -12165,9 +12129,9 @@
|
|||||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
||||||
},
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "7.4.0",
|
"version": "7.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
|
||||||
"integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
|
"integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"lru-cache": "^6.0.0"
|
"lru-cache": "^6.0.0"
|
||||||
},
|
},
|
||||||
@@ -12427,16 +12391,6 @@
|
|||||||
"is-number": "^7.0.0"
|
"is-number": "^7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tough-cookie": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
|
|
||||||
"requires": {
|
|
||||||
"ip-regex": "^2.1.0",
|
|
||||||
"psl": "^1.1.28",
|
|
||||||
"punycode": "^2.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tr46": {
|
"tr46": {
|
||||||
"version": "0.0.3",
|
"version": "0.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
@@ -12684,9 +12638,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"word-wrap": {
|
"word-wrap": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||||
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
|
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"wrap-ansi": {
|
"wrap-ansi": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-graalvm",
|
"name": "setup-graalvm",
|
||||||
"version": "1.0.12",
|
"version": "1.1.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "GitHub Action for GraalVM",
|
"description": "GitHub Action for GraalVM",
|
||||||
"main": "lib/main.js",
|
"main": "lib/main.js",
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"@actions/tool-cache": "^1.7.1",
|
"@actions/tool-cache": "^1.7.1",
|
||||||
"@octokit/core": "^3.5.1",
|
"@octokit/core": "^3.5.1",
|
||||||
"@octokit/types": "^6.34.0",
|
"@octokit/types": "^6.34.0",
|
||||||
"semver": "^7.3.8",
|
"semver": "^7.5.2",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import * as otypes from '@octokit/types'
|
|||||||
export const INPUT_VERSION = 'version'
|
export const INPUT_VERSION = 'version'
|
||||||
export const INPUT_GDS_TOKEN = 'gds-token'
|
export const INPUT_GDS_TOKEN = 'gds-token'
|
||||||
export const INPUT_JAVA_VERSION = 'java-version'
|
export const INPUT_JAVA_VERSION = 'java-version'
|
||||||
|
export const INPUT_DISTRIBUTION = 'distribution'
|
||||||
export const INPUT_COMPONENTS = 'components'
|
export const INPUT_COMPONENTS = 'components'
|
||||||
export const INPUT_GITHUB_TOKEN = 'github-token'
|
export const INPUT_GITHUB_TOKEN = 'github-token'
|
||||||
export const INPUT_SET_JAVA_HOME = 'set-java-home'
|
export const INPUT_SET_JAVA_HOME = 'set-java-home'
|
||||||
@@ -14,15 +15,22 @@ export const IS_LINUX = process.platform === 'linux'
|
|||||||
export const IS_MACOS = process.platform === 'darwin'
|
export const IS_MACOS = process.platform === 'darwin'
|
||||||
export const IS_WINDOWS = process.platform === 'win32'
|
export const IS_WINDOWS = process.platform === 'win32'
|
||||||
|
|
||||||
|
export const DISTRIBUTION_GRAALVM = 'graalvm'
|
||||||
|
export const DISTRIBUTION_GRAALVM_COMMUNITY = 'graalvm-community'
|
||||||
|
export const DISTRIBUTION_MANDREL = 'mandrel'
|
||||||
|
|
||||||
export const VERSION_DEV = 'dev'
|
export const VERSION_DEV = 'dev'
|
||||||
export const VERSION_LATEST = 'latest'
|
export const VERSION_LATEST = 'latest'
|
||||||
|
|
||||||
|
export const JDK_ARCH = determineJDKArchitecture()
|
||||||
|
export const JDK_PLATFORM = determineJDKPlatform()
|
||||||
|
export const JDK_HOME_SUFFIX = IS_MACOS ? '/Contents/Home' : ''
|
||||||
|
|
||||||
export const GRAALVM_ARCH = determineGraalVMArchitecture()
|
export const GRAALVM_ARCH = determineGraalVMArchitecture()
|
||||||
export const GRAALVM_FILE_EXTENSION = IS_WINDOWS ? '.zip' : '.tar.gz'
|
export const GRAALVM_FILE_EXTENSION = IS_WINDOWS ? '.zip' : '.tar.gz'
|
||||||
export const GRAALVM_GH_USER = 'graalvm'
|
export const GRAALVM_GH_USER = 'graalvm'
|
||||||
export const GRAALVM_PLATFORM = IS_WINDOWS ? 'windows' : process.platform
|
export const GRAALVM_PLATFORM = IS_WINDOWS ? 'windows' : process.platform
|
||||||
export const GRAALVM_RELEASES_REPO = 'graalvm-ce-builds'
|
export const GRAALVM_RELEASES_REPO = 'graalvm-ce-builds'
|
||||||
export const JDK_HOME_SUFFIX = IS_MACOS ? '/Contents/Home' : ''
|
|
||||||
|
|
||||||
export const MANDREL_NAMESPACE = 'mandrel-'
|
export const MANDREL_NAMESPACE = 'mandrel-'
|
||||||
|
|
||||||
@@ -32,9 +40,46 @@ export const GDS_GRAALVM_PRODUCT_ID = 'D53FAE8052773FFAE0530F15000AA6C6'
|
|||||||
export const ENV_GITHUB_EVENT_NAME = 'GITHUB_EVENT_NAME'
|
export const ENV_GITHUB_EVENT_NAME = 'GITHUB_EVENT_NAME'
|
||||||
export const EVENT_NAME_PULL_REQUEST = 'pull_request'
|
export const EVENT_NAME_PULL_REQUEST = 'pull_request'
|
||||||
|
|
||||||
|
export const ERROR_HINT =
|
||||||
|
'If you think this is a mistake, please file an issue at: https://github.com/graalvm/setup-graalvm/issues.'
|
||||||
|
|
||||||
export type LatestReleaseResponse =
|
export type LatestReleaseResponse =
|
||||||
otypes.Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']
|
otypes.Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']
|
||||||
|
|
||||||
|
export type MatchingRefsResponse =
|
||||||
|
otypes.Endpoints['GET /repos/{owner}/{repo}/git/matching-refs/{ref}']['response']
|
||||||
|
|
||||||
|
function determineJDKArchitecture(): string {
|
||||||
|
switch (process.arch) {
|
||||||
|
case 'x64': {
|
||||||
|
return 'x64'
|
||||||
|
}
|
||||||
|
case 'arm64': {
|
||||||
|
return 'aarch64'
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
throw new Error(`Unsupported architecture: ${process.arch}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function determineJDKPlatform(): string {
|
||||||
|
switch (process.platform) {
|
||||||
|
case 'linux': {
|
||||||
|
return 'linux'
|
||||||
|
}
|
||||||
|
case 'darwin': {
|
||||||
|
return 'macos'
|
||||||
|
}
|
||||||
|
case 'win32': {
|
||||||
|
return 'windows'
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
throw new Error(`Unsupported platform: ${process.platform}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function determineGraalVMArchitecture(): string {
|
function determineGraalVMArchitecture(): string {
|
||||||
switch (process.arch) {
|
switch (process.arch) {
|
||||||
case 'x64': {
|
case 'x64': {
|
||||||
|
|||||||
@@ -1,36 +1,25 @@
|
|||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import {getTaggedRelease, toSemVer} from '../utils'
|
|
||||||
import {lt, major, minor, valid} from 'semver'
|
|
||||||
import {findGraalVMVersion} from '../graalvm'
|
|
||||||
import {GRAALVM_RELEASES_REPO} from '../constants'
|
|
||||||
|
|
||||||
export async function checkForUpdates(
|
export async function checkForUpdates(
|
||||||
graalVMVersion: string,
|
graalVMVersion: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (
|
||||||
|
graalVMVersion.length > 0 &&
|
||||||
|
(javaVersion === '17' || javaVersion === '19')
|
||||||
|
) {
|
||||||
|
const recommendedJDK = javaVersion === '17' ? '17' : '20'
|
||||||
|
core.notice(
|
||||||
|
`A new GraalVM release is available! Please consider upgrading to GraalVM for JDK ${recommendedJDK}. Instructions: https://github.com/graalvm/setup-graalvm#migrating-from-graalvm-223-or-earlier-to-the-new-graalvm-for-jdk-17-and-later`
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (graalVMVersion.startsWith('22.3.') && javaVersion === '11') {
|
if (graalVMVersion.startsWith('22.3.') && javaVersion === '11') {
|
||||||
core.notice(
|
core.notice(
|
||||||
'Please consider upgrading your project to Java 17+. GraalVM 22.3.X releases are the last to support JDK11: https://github.com/oracle/graal/issues/5063'
|
'Please consider upgrading your project to Java 17+. GraalVM 22.3.X releases are the last to support JDK11: https://github.com/oracle/graal/issues/5063'
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// TODO: add support for JDK-specific update checks (e.g., 17.0.X)
|
||||||
const latestRelease = await getTaggedRelease(
|
|
||||||
GRAALVM_RELEASES_REPO,
|
|
||||||
'vm-22.3.1'
|
|
||||||
)
|
|
||||||
const latestGraalVMVersion = findGraalVMVersion(latestRelease)
|
|
||||||
const selectedVersion = toSemVer(graalVMVersion)
|
|
||||||
const latestVersion = toSemVer(latestGraalVMVersion)
|
|
||||||
if (
|
|
||||||
valid(selectedVersion) &&
|
|
||||||
valid(latestVersion) &&
|
|
||||||
lt(selectedVersion, latestVersion)
|
|
||||||
) {
|
|
||||||
core.notice(
|
|
||||||
`A new GraalVM release is available! Please consider upgrading to GraalVM ${latestGraalVMVersion}. Release notes: https://www.graalvm.org/release-notes/${major(
|
|
||||||
latestVersion
|
|
||||||
)}_${minor(latestVersion)}/`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,18 @@ interface BuildOutput {
|
|||||||
name: string
|
name: string
|
||||||
graalvm_version: string
|
graalvm_version: string
|
||||||
java_version: string | null
|
java_version: string | null
|
||||||
|
vendor_version?: string
|
||||||
c_compiler: string | null
|
c_compiler: string | null
|
||||||
garbage_collector: string
|
garbage_collector: string
|
||||||
|
graal_compiler?: {
|
||||||
|
optimization_level: string
|
||||||
|
march: string
|
||||||
|
pgo?: string[]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
analysis_results: {
|
analysis_results: {
|
||||||
classes: AnalysisResult
|
classes: AnalysisResult
|
||||||
|
types?: AnalysisResult
|
||||||
fields: AnalysisResult
|
fields: AnalysisResult
|
||||||
methods: AnalysisResult
|
methods: AnalysisResult
|
||||||
}
|
}
|
||||||
@@ -49,6 +56,9 @@ interface BuildOutput {
|
|||||||
}
|
}
|
||||||
image_heap: {
|
image_heap: {
|
||||||
bytes: number
|
bytes: number
|
||||||
|
objects?: {
|
||||||
|
count: number
|
||||||
|
}
|
||||||
resources: {
|
resources: {
|
||||||
count: number
|
count: number
|
||||||
bytes: number
|
bytes: number
|
||||||
@@ -75,10 +85,12 @@ interface BuildOutput {
|
|||||||
system_total: number
|
system_total: number
|
||||||
peak_rss_bytes: number
|
peak_rss_bytes: number
|
||||||
}
|
}
|
||||||
|
total_secs?: number
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setUpNativeImageBuildReports(
|
export async function setUpNativeImageBuildReports(
|
||||||
|
isGraalVMforJDK17OrLater: boolean,
|
||||||
graalVMVersion: string
|
graalVMVersion: string
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const isRequired = areJobReportsEnabled() || arePRReportsEnabled()
|
const isRequired = areJobReportsEnabled() || arePRReportsEnabled()
|
||||||
@@ -86,6 +98,7 @@ export async function setUpNativeImageBuildReports(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
const isSupported =
|
const isSupported =
|
||||||
|
isGraalVMforJDK17OrLater ||
|
||||||
graalVMVersion === c.VERSION_LATEST ||
|
graalVMVersion === c.VERSION_LATEST ||
|
||||||
graalVMVersion === c.VERSION_DEV ||
|
graalVMVersion === c.VERSION_DEV ||
|
||||||
(!graalVMVersion.startsWith(c.MANDREL_NAMESPACE) &&
|
(!graalVMVersion.startsWith(c.MANDREL_NAMESPACE) &&
|
||||||
@@ -153,7 +166,12 @@ function createReport(data: BuildOutput): string {
|
|||||||
const context = github.context
|
const context = github.context
|
||||||
const info = data.general_info
|
const info = data.general_info
|
||||||
const analysis = data.analysis_results
|
const analysis = data.analysis_results
|
||||||
|
const analysisTypes = analysis.types ? analysis.types : analysis.classes
|
||||||
const details = data.image_details
|
const details = data.image_details
|
||||||
|
let objectCount = ''
|
||||||
|
if (details.image_heap.objects) {
|
||||||
|
objectCount = `${details.image_heap.objects.count.toLocaleString()} objects, `
|
||||||
|
}
|
||||||
const debugInfoBytes = details.debug_info ? details.debug_info.bytes : 0
|
const debugInfoBytes = details.debug_info ? details.debug_info.bytes : 0
|
||||||
const otherBytes =
|
const otherBytes =
|
||||||
details.total_bytes -
|
details.total_bytes -
|
||||||
@@ -170,12 +188,59 @@ function createReport(data: BuildOutput): string {
|
|||||||
<td align="left"></td>
|
<td align="left"></td>
|
||||||
</tr>`
|
</tr>`
|
||||||
}
|
}
|
||||||
|
let versionLine
|
||||||
|
if (info.vendor_version) {
|
||||||
|
versionLine = `
|
||||||
|
<tr>
|
||||||
|
<td><a href="${DOCS_BASE}#glossary-java-info" target="_blank">Java version</a></td>
|
||||||
|
<td>${info.java_version}</td>
|
||||||
|
<td><a href="${DOCS_BASE}#glossary-java-info" target="_blank">Vendor version</a></td>
|
||||||
|
<td>${info.vendor_version}</td>
|
||||||
|
</tr>`
|
||||||
|
} else {
|
||||||
|
versionLine = `
|
||||||
|
<tr>
|
||||||
|
<td><a href="${DOCS_BASE}#glossary-version-info" target="_blank">GraalVM version</a></td>
|
||||||
|
<td>${info.graalvm_version}</td>
|
||||||
|
<td><a href="${DOCS_BASE}#glossary-java-version-info" target="_blank">Java version</a></td>
|
||||||
|
<td>${info.java_version}</td>
|
||||||
|
</tr>`
|
||||||
|
}
|
||||||
|
let graalLine
|
||||||
|
if (info.graal_compiler) {
|
||||||
|
let pgoSuffix = ''
|
||||||
|
const isOracleGraalVM =
|
||||||
|
info.vendor_version && info.vendor_version.includes('Oracle GraalVM')
|
||||||
|
if (isOracleGraalVM) {
|
||||||
|
const pgo = info.graal_compiler.pgo
|
||||||
|
const pgoText = pgo ? pgo.join('+') : 'off'
|
||||||
|
pgoSuffix = `, <a href="${DOCS_BASE}#recommendation-pgo" target="_blank">PGO</a>: ${pgoText}`
|
||||||
|
}
|
||||||
|
graalLine = `
|
||||||
|
<tr>
|
||||||
|
<td align="left"><a href="${DOCS_BASE}#glossary-graal-compiler" target="_blank">Graal compiler</a></td>
|
||||||
|
<td colspan="3">
|
||||||
|
optimization level: ${info.graal_compiler.optimization_level},
|
||||||
|
target machine: ${info.graal_compiler.march}${pgoSuffix}
|
||||||
|
</td>
|
||||||
|
</tr>`
|
||||||
|
}
|
||||||
|
|
||||||
const resources = data.resource_usage
|
const resources = data.resource_usage
|
||||||
|
|
||||||
|
let totalTime = ''
|
||||||
|
let gcTotalTimeRatio = ''
|
||||||
|
if (resources.total_secs) {
|
||||||
|
totalTime = ` in ${secondsToHuman(resources.total_secs)}`
|
||||||
|
gcTotalTimeRatio = ` (${toPercent(
|
||||||
|
resources.garbage_collection.total_secs,
|
||||||
|
resources.total_secs
|
||||||
|
)} of total time)`
|
||||||
|
}
|
||||||
|
|
||||||
return `## GraalVM Native Image Build Report
|
return `## GraalVM Native Image Build Report
|
||||||
|
|
||||||
\`${info.name}\` generated as part of the '${
|
\`${info.name}\` generated${totalTime} as part of the '${
|
||||||
context.job
|
context.job
|
||||||
}' job in run <a href="${context.serverUrl}/${context.repo.owner}/${
|
}' job in run <a href="${context.serverUrl}/${context.repo.owner}/${
|
||||||
context.repo.repo
|
context.repo.repo
|
||||||
@@ -183,18 +248,14 @@ function createReport(data: BuildOutput): string {
|
|||||||
|
|
||||||
#### Environment
|
#### Environment
|
||||||
|
|
||||||
<table>
|
<table>${versionLine}${graalLine}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="${DOCS_BASE}#glossary-version-info" target="_blank">GraalVM version</a></td>
|
|
||||||
<td>${info.graalvm_version}</td>
|
|
||||||
<td><a href="${DOCS_BASE}#glossary-ccompiler" target="_blank">C compiler</a></td>
|
<td><a href="${DOCS_BASE}#glossary-ccompiler" target="_blank">C compiler</a></td>
|
||||||
<td>${info.c_compiler}</td>
|
<td colspan="3">${info.c_compiler}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="${DOCS_BASE}#glossary-java-version-info" target="_blank">Java version</a></td>
|
|
||||||
<td>${info.java_version}</td>
|
|
||||||
<td><a href="${DOCS_BASE}#glossary-gc" target="_blank">Garbage collector</a></td>
|
<td><a href="${DOCS_BASE}#glossary-gc" target="_blank">Garbage collector</a></td>
|
||||||
<td>${info.garbage_collector}</td>
|
<td colspan="3">${info.garbage_collector}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -215,17 +276,17 @@ function createReport(data: BuildOutput): string {
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-reachability" target="_blank">Reachable</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-reachability" target="_blank">Reachable</a></td>
|
||||||
<td align="right">${analysis.classes.reachable}</td>
|
<td align="right">${analysisTypes.reachable.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.classes.reachable,
|
analysisTypes.reachable,
|
||||||
analysis.classes.total
|
analysisTypes.total
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="right">${analysis.fields.reachable}</td>
|
<td align="right">${analysis.fields.reachable.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.fields.reachable,
|
analysis.fields.reachable,
|
||||||
analysis.fields.total
|
analysis.fields.total
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="right">${analysis.methods.reachable}</td>
|
<td align="right">${analysis.methods.reachable.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.methods.reachable,
|
analysis.methods.reachable,
|
||||||
analysis.methods.total
|
analysis.methods.total
|
||||||
@@ -233,17 +294,17 @@ function createReport(data: BuildOutput): string {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-reflection-registrations" target="_blank">Reflection</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-reflection-registrations" target="_blank">Reflection</a></td>
|
||||||
<td align="right">${analysis.classes.reflection}</td>
|
<td align="right">${analysisTypes.reflection.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.classes.reflection,
|
analysisTypes.reflection,
|
||||||
analysis.classes.total
|
analysisTypes.total
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="right">${analysis.fields.reflection}</td>
|
<td align="right">${analysis.fields.reflection.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.fields.reflection,
|
analysis.fields.reflection,
|
||||||
analysis.fields.total
|
analysis.fields.total
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="right">${analysis.methods.reflection}</td>
|
<td align="right">${analysis.methods.reflection.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.methods.reflection,
|
analysis.methods.reflection,
|
||||||
analysis.methods.total
|
analysis.methods.total
|
||||||
@@ -251,17 +312,17 @@ function createReport(data: BuildOutput): string {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-jni-access-registrations" target="_blank">JNI</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-jni-access-registrations" target="_blank">JNI</a></td>
|
||||||
<td align="right">${analysis.classes.jni}</td>
|
<td align="right">${analysisTypes.jni.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.classes.jni,
|
analysisTypes.jni,
|
||||||
analysis.classes.total
|
analysisTypes.total
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="right">${analysis.fields.jni}</td>
|
<td align="right">${analysis.fields.jni.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.fields.jni,
|
analysis.fields.jni,
|
||||||
analysis.fields.total
|
analysis.fields.total
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="right">${analysis.methods.jni}</td>
|
<td align="right">${analysis.methods.jni.toLocaleString()}</td>
|
||||||
<td align="right">${toPercent(
|
<td align="right">${toPercent(
|
||||||
analysis.methods.jni,
|
analysis.methods.jni,
|
||||||
analysis.methods.total
|
analysis.methods.total
|
||||||
@@ -269,11 +330,11 @@ function createReport(data: BuildOutput): string {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-reachability" target="_blank">Loaded</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-reachability" target="_blank">Loaded</a></td>
|
||||||
<td align="right">${analysis.classes.total}</td>
|
<td align="right">${analysisTypes.total.toLocaleString()}</td>
|
||||||
<td align="right">100.000%</td>
|
<td align="right">100.000%</td>
|
||||||
<td align="right">${analysis.fields.total}</td>
|
<td align="right">${analysis.fields.total.toLocaleString()}</td>
|
||||||
<td align="right">100.000%</td>
|
<td align="right">100.000%</td>
|
||||||
<td align="right">${analysis.methods.total}</td>
|
<td align="right">${analysis.methods.total.toLocaleString()}</td>
|
||||||
<td align="right">100.000%</td>
|
<td align="right">100.000%</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -298,9 +359,7 @@ function createReport(data: BuildOutput): string {
|
|||||||
details.code_area.bytes,
|
details.code_area.bytes,
|
||||||
details.total_bytes
|
details.total_bytes
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="left">${
|
<td align="left">${details.code_area.compilation_units.toLocaleString()} compilation units</td>
|
||||||
details.code_area.compilation_units
|
|
||||||
} compilation units</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-image-heap" target="_blank">Image heap</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-image-heap" target="_blank">Image heap</a></td>
|
||||||
@@ -309,9 +368,9 @@ function createReport(data: BuildOutput): string {
|
|||||||
details.image_heap.bytes,
|
details.image_heap.bytes,
|
||||||
details.total_bytes
|
details.total_bytes
|
||||||
)}</td>
|
)}</td>
|
||||||
<td align="left">${bytesToHuman(
|
<td align="left">${objectCount}${bytesToHuman(
|
||||||
details.image_heap.resources.bytes
|
details.image_heap.resources.bytes
|
||||||
)} for ${details.image_heap.resources.count} resources</td>
|
)} for ${details.image_heap.resources.count.toLocaleString()} resources</td>
|
||||||
</tr>${debugInfoLine}
|
</tr>${debugInfoLine}
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-other-data" target="_blank">Other data</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-other-data" target="_blank">Other data</a></td>
|
||||||
@@ -338,7 +397,7 @@ function createReport(data: BuildOutput): string {
|
|||||||
<td align="left"><a href="${DOCS_BASE}#glossary-garbage-collections" target="_blank">Garbage collection</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-garbage-collections" target="_blank">Garbage collection</a></td>
|
||||||
<td align="left">${resources.garbage_collection.total_secs.toFixed(
|
<td align="left">${resources.garbage_collection.total_secs.toFixed(
|
||||||
2
|
2
|
||||||
)}s in ${resources.garbage_collection.count} GCs</td>
|
)}s${gcTotalTimeRatio} in ${resources.garbage_collection.count} GCs</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left"><a href="${DOCS_BASE}#glossary-peak-rss" target="_blank">Peak RSS</a></td>
|
<td align="left"><a href="${DOCS_BASE}#glossary-peak-rss" target="_blank">Peak RSS</a></td>
|
||||||
@@ -377,3 +436,11 @@ function bytesToHuman(bytes: number): string {
|
|||||||
return `${(bytes / BYTES_TO_GiB).toFixed(2)}GB`
|
return `${(bytes / BYTES_TO_GiB).toFixed(2)}GB`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function secondsToHuman(seconds: number): string {
|
||||||
|
if (seconds < 60) {
|
||||||
|
return `${seconds.toFixed(1)}s`
|
||||||
|
} else {
|
||||||
|
return `${Math.trunc(seconds / 60)}m ${Math.trunc(seconds % 60)}s`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
10
src/gds.ts
10
src/gds.ts
@@ -27,12 +27,12 @@ interface GDSErrorResponse {
|
|||||||
readonly message: string
|
readonly message: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function downloadGraalVMEE(
|
export async function downloadGraalVMEELegacy(
|
||||||
gdsToken: string,
|
gdsToken: string,
|
||||||
version: string,
|
version: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const userAgent = `GraalVMGitHubAction/1.0.12 (arch:${c.GRAALVM_ARCH}; os:${c.GRAALVM_PLATFORM}; java:${javaVersion})`
|
const userAgent = `GraalVMGitHubAction/1.1.3 (arch:${c.GRAALVM_ARCH}; os:${c.GRAALVM_PLATFORM}; java:${javaVersion})`
|
||||||
const baseArtifact = await fetchArtifact(
|
const baseArtifact = await fetchArtifact(
|
||||||
userAgent,
|
userAgent,
|
||||||
'isBase:True',
|
'isBase:True',
|
||||||
@@ -70,7 +70,11 @@ export async function fetchArtifact(
|
|||||||
await response.readBody()
|
await response.readBody()
|
||||||
) as GDSArtifactsResponse
|
) as GDSArtifactsResponse
|
||||||
if (artifactResponse.items.length !== 1) {
|
if (artifactResponse.items.length !== 1) {
|
||||||
throw new Error(`Found more than one GDS artifact`)
|
throw new Error(
|
||||||
|
artifactResponse.items.length > 1
|
||||||
|
? `Found more than one GDS artifact. ${c.ERROR_HINT}`
|
||||||
|
: `Unable to find GDS artifact. Are you sure version: '${version}' is correct?`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
return artifactResponse.items[0]
|
return artifactResponse.items[0]
|
||||||
}
|
}
|
||||||
|
|||||||
213
src/graalvm.ts
213
src/graalvm.ts
@@ -3,78 +3,132 @@ import {
|
|||||||
downloadAndExtractJDK,
|
downloadAndExtractJDK,
|
||||||
downloadExtractAndCacheJDK,
|
downloadExtractAndCacheJDK,
|
||||||
getLatestRelease,
|
getLatestRelease,
|
||||||
|
getMatchingTags,
|
||||||
getTaggedRelease
|
getTaggedRelease
|
||||||
} from './utils'
|
} from './utils'
|
||||||
import {downloadGraalVMEE} from './gds'
|
import {downloadGraalVMEELegacy} from './gds'
|
||||||
import {downloadTool} from '@actions/tool-cache'
|
import {downloadTool} from '@actions/tool-cache'
|
||||||
|
import {basename} from 'path'
|
||||||
|
import {gt as semverGt, valid as semverValid} from 'semver'
|
||||||
|
|
||||||
|
const GRAALVM_DL_BASE = 'https://download.oracle.com/graalvm'
|
||||||
const GRAALVM_CE_DL_BASE = `https://github.com/graalvm/${c.GRAALVM_RELEASES_REPO}/releases/download`
|
const GRAALVM_CE_DL_BASE = `https://github.com/graalvm/${c.GRAALVM_RELEASES_REPO}/releases/download`
|
||||||
const GRAALVM_REPO_DEV_BUILDS = 'graalvm-ce-dev-builds'
|
const GRAALVM_REPO_DEV_BUILDS = 'graalvm-ce-dev-builds'
|
||||||
|
const GRAALVM_JDK_TAG_PREFIX = 'jdk-'
|
||||||
const GRAALVM_TAG_PREFIX = 'vm-'
|
const GRAALVM_TAG_PREFIX = 'vm-'
|
||||||
|
|
||||||
export async function setUpGraalVMLatest(
|
// Support for GraalVM for JDK 17 and later
|
||||||
gdsToken: string,
|
|
||||||
javaVersion: string
|
|
||||||
): Promise<string> {
|
|
||||||
const lockedVersion = '22.3.1'
|
|
||||||
if (gdsToken.length > 0) {
|
|
||||||
return setUpGraalVMRelease(gdsToken, lockedVersion, javaVersion)
|
|
||||||
}
|
|
||||||
const latestRelease = await getTaggedRelease(
|
|
||||||
c.GRAALVM_RELEASES_REPO,
|
|
||||||
GRAALVM_TAG_PREFIX + lockedVersion
|
|
||||||
)
|
|
||||||
const version = findGraalVMVersion(latestRelease)
|
|
||||||
return setUpGraalVMRelease(gdsToken, version, javaVersion)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function findGraalVMVersion(release: c.LatestReleaseResponse['data']) {
|
export async function setUpGraalVMJDK(
|
||||||
const tag_name = release.tag_name
|
javaVersionOrDev: string
|
||||||
if (!tag_name.startsWith(GRAALVM_TAG_PREFIX)) {
|
|
||||||
throw new Error(`Could not find latest GraalVM release: ${tag_name}`)
|
|
||||||
}
|
|
||||||
return tag_name.substring(GRAALVM_TAG_PREFIX.length, tag_name.length)
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function setUpGraalVMDevBuild(
|
|
||||||
gdsToken: string,
|
|
||||||
javaVersion: string
|
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
if (gdsToken.length > 0) {
|
if (javaVersionOrDev === c.VERSION_DEV) {
|
||||||
throw new Error('Downloading GraalVM EE dev builds is not supported')
|
return setUpGraalVMJDKDevBuild()
|
||||||
}
|
}
|
||||||
const latestDevBuild = await getLatestRelease(GRAALVM_REPO_DEV_BUILDS)
|
const javaVersion = javaVersionOrDev
|
||||||
let resolvedJavaVersion
|
const toolName = determineToolName(javaVersion, false)
|
||||||
if (javaVersion == c.VERSION_DEV) {
|
let downloadUrl: string
|
||||||
resolvedJavaVersion = findHighestJavaVersion(latestDevBuild, c.VERSION_DEV)
|
if (javaVersion.includes('.')) {
|
||||||
|
const majorJavaVersion = javaVersion.split('.')[0]
|
||||||
|
downloadUrl = `${GRAALVM_DL_BASE}/${majorJavaVersion}/archive/${toolName}${c.GRAALVM_FILE_EXTENSION}`
|
||||||
} else {
|
} else {
|
||||||
resolvedJavaVersion = javaVersion
|
downloadUrl = `${GRAALVM_DL_BASE}/${javaVersion}/latest/${toolName}${c.GRAALVM_FILE_EXTENSION}`
|
||||||
}
|
}
|
||||||
|
const downloader = async () => downloadGraalVMJDK(downloadUrl, javaVersion)
|
||||||
|
return downloadExtractAndCacheJDK(downloader, toolName, javaVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function setUpGraalVMJDKCE(
|
||||||
|
javaVersionOrDev: string
|
||||||
|
): Promise<string> {
|
||||||
|
if (javaVersionOrDev === c.VERSION_DEV) {
|
||||||
|
return setUpGraalVMJDKDevBuild()
|
||||||
|
}
|
||||||
|
let javaVersion = javaVersionOrDev
|
||||||
|
if (!javaVersion.includes('.')) {
|
||||||
|
javaVersion = await findLatestGraalVMJDKCEJavaVersion(javaVersion)
|
||||||
|
}
|
||||||
|
if (javaVersion.split('.').length != 3) {
|
||||||
|
throw new Error(
|
||||||
|
`java-version set to '${javaVersionOrDev}', which was resolved to '${javaVersion}'. Please make sure the java-version is set correctly. ${c.ERROR_HINT}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
const toolName = determineToolName(javaVersion, true)
|
||||||
|
const downloadUrl = `${GRAALVM_CE_DL_BASE}/jdk-${javaVersion}/${toolName}${c.GRAALVM_FILE_EXTENSION}`
|
||||||
|
const downloader = async () => downloadGraalVMJDK(downloadUrl, javaVersion)
|
||||||
|
return downloadExtractAndCacheJDK(downloader, toolName, javaVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function findLatestGraalVMJDKCEJavaVersion(
|
||||||
|
majorJavaVersion: string
|
||||||
|
): Promise<string> {
|
||||||
|
const matchingRefs = await getMatchingTags(
|
||||||
|
`${GRAALVM_JDK_TAG_PREFIX}${majorJavaVersion}`
|
||||||
|
)
|
||||||
|
const lowestNonExistingVersion = '0.0.1'
|
||||||
|
let highestVersion = lowestNonExistingVersion
|
||||||
|
const versionNumberStartIndex = `refs/tags/${GRAALVM_JDK_TAG_PREFIX}`.length
|
||||||
|
for (const matchingRef of matchingRefs) {
|
||||||
|
const currentVersion = matchingRef.ref.substring(versionNumberStartIndex)
|
||||||
|
if (
|
||||||
|
semverValid(currentVersion) &&
|
||||||
|
semverGt(currentVersion, highestVersion)
|
||||||
|
) {
|
||||||
|
highestVersion = currentVersion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (highestVersion === lowestNonExistingVersion) {
|
||||||
|
throw new Error(
|
||||||
|
`Unable to find the latest Java version for '${majorJavaVersion}'. Please make sure the java-version is set correctly. ${c.ERROR_HINT}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return highestVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
function determineToolName(javaVersion: string, isCommunity: boolean) {
|
||||||
|
return `graalvm${isCommunity ? '-community' : ''}-jdk-${javaVersion}_${
|
||||||
|
c.JDK_PLATFORM
|
||||||
|
}-${c.JDK_ARCH}_bin`
|
||||||
|
}
|
||||||
|
|
||||||
|
async function downloadGraalVMJDK(
|
||||||
|
downloadUrl: string,
|
||||||
|
javaVersion: string
|
||||||
|
): Promise<string> {
|
||||||
|
try {
|
||||||
|
return await downloadTool(downloadUrl)
|
||||||
|
} catch (error) {
|
||||||
|
if (error instanceof Error && error.message.includes('404')) {
|
||||||
|
// Not Found
|
||||||
|
throw new Error(
|
||||||
|
`Failed to download ${basename(
|
||||||
|
downloadUrl
|
||||||
|
)}. Are you sure java-version: '${javaVersion}' is correct?`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`Failed to download ${basename(downloadUrl)} (error: ${error}).`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Support for GraalVM dev builds
|
||||||
|
|
||||||
|
export async function setUpGraalVMJDKDevBuild(): Promise<string> {
|
||||||
|
const latestDevBuild = await getLatestRelease(GRAALVM_REPO_DEV_BUILDS)
|
||||||
|
const resolvedJavaVersion = findHighestJavaVersion(
|
||||||
|
latestDevBuild,
|
||||||
|
c.VERSION_DEV
|
||||||
|
)
|
||||||
const downloadUrl = findDownloadUrl(latestDevBuild, resolvedJavaVersion)
|
const downloadUrl = findDownloadUrl(latestDevBuild, resolvedJavaVersion)
|
||||||
return downloadAndExtractJDK(downloadUrl)
|
return downloadAndExtractJDK(downloadUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setUpGraalVMRelease(
|
|
||||||
gdsToken: string,
|
|
||||||
version: string,
|
|
||||||
javaVersion: string
|
|
||||||
): Promise<string> {
|
|
||||||
const isEE = gdsToken.length > 0
|
|
||||||
const toolName = determineToolName(isEE, version, javaVersion)
|
|
||||||
let downloader: () => Promise<string>
|
|
||||||
if (isEE) {
|
|
||||||
downloader = async () => downloadGraalVMEE(gdsToken, version, javaVersion)
|
|
||||||
} else {
|
|
||||||
downloader = async () => downloadGraalVMCE(version, javaVersion)
|
|
||||||
}
|
|
||||||
return downloadExtractAndCacheJDK(downloader, toolName, version)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function findHighestJavaVersion(
|
export function findHighestJavaVersion(
|
||||||
release: c.LatestReleaseResponse['data'],
|
release: c.LatestReleaseResponse['data'],
|
||||||
version: string
|
version: string
|
||||||
): string {
|
): string {
|
||||||
const graalVMIdentifierPattern = determineGraalVMIdentifier(
|
const graalVMIdentifierPattern = determineGraalVMLegacyIdentifier(
|
||||||
false,
|
false,
|
||||||
version,
|
version,
|
||||||
'(\\d+)'
|
'(\\d+)'
|
||||||
@@ -104,11 +158,54 @@ export function findHighestJavaVersion(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Support for GraalVM 22.X releases and earlier
|
||||||
|
|
||||||
|
export async function setUpGraalVMLatest_22_X(
|
||||||
|
gdsToken: string,
|
||||||
|
javaVersion: string
|
||||||
|
): Promise<string> {
|
||||||
|
const lockedVersion = javaVersion === '19' ? '22.3.1' : '22.3.3'
|
||||||
|
if (gdsToken.length > 0) {
|
||||||
|
return setUpGraalVMRelease(gdsToken, lockedVersion, javaVersion)
|
||||||
|
}
|
||||||
|
const latestRelease = await getTaggedRelease(
|
||||||
|
c.GRAALVM_RELEASES_REPO,
|
||||||
|
GRAALVM_TAG_PREFIX + lockedVersion
|
||||||
|
)
|
||||||
|
const version = findGraalVMVersion(latestRelease)
|
||||||
|
return setUpGraalVMRelease(gdsToken, version, javaVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function findGraalVMVersion(release: c.LatestReleaseResponse['data']) {
|
||||||
|
const tag_name = release.tag_name
|
||||||
|
if (!tag_name.startsWith(GRAALVM_TAG_PREFIX)) {
|
||||||
|
throw new Error(`Could not find latest GraalVM release: ${tag_name}`)
|
||||||
|
}
|
||||||
|
return tag_name.substring(GRAALVM_TAG_PREFIX.length, tag_name.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function setUpGraalVMRelease(
|
||||||
|
gdsToken: string,
|
||||||
|
version: string,
|
||||||
|
javaVersion: string
|
||||||
|
): Promise<string> {
|
||||||
|
const isEE = gdsToken.length > 0
|
||||||
|
const toolName = determineLegacyToolName(isEE, version, javaVersion)
|
||||||
|
let downloader: () => Promise<string>
|
||||||
|
if (isEE) {
|
||||||
|
downloader = async () =>
|
||||||
|
downloadGraalVMEELegacy(gdsToken, version, javaVersion)
|
||||||
|
} else {
|
||||||
|
downloader = async () => downloadGraalVMCELegacy(version, javaVersion)
|
||||||
|
}
|
||||||
|
return downloadExtractAndCacheJDK(downloader, toolName, version)
|
||||||
|
}
|
||||||
|
|
||||||
function findDownloadUrl(
|
function findDownloadUrl(
|
||||||
release: c.LatestReleaseResponse['data'],
|
release: c.LatestReleaseResponse['data'],
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): string {
|
): string {
|
||||||
const graalVMIdentifier = determineGraalVMIdentifier(
|
const graalVMIdentifier = determineGraalVMLegacyIdentifier(
|
||||||
false,
|
false,
|
||||||
c.VERSION_DEV,
|
c.VERSION_DEV,
|
||||||
javaVersion
|
javaVersion
|
||||||
@@ -120,21 +217,21 @@ function findDownloadUrl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Could not find GraalVM dev build for Java ${javaVersion}. It may no longer be available, so please consider upgrading the Java version. If you think this is a mistake, please file an issue at: https://github.com/graalvm/setup-graalvm/issues.`
|
`Could not find GraalVM dev build for Java ${javaVersion}. It may no longer be available, so please consider upgrading the Java version. ${c.ERROR_HINT}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function determineGraalVMIdentifier(
|
function determineGraalVMLegacyIdentifier(
|
||||||
isEE: boolean,
|
isEE: boolean,
|
||||||
version: string,
|
version: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): string {
|
): string {
|
||||||
return `${determineToolName(isEE, version, javaVersion)}-${
|
return `${determineLegacyToolName(isEE, version, javaVersion)}-${
|
||||||
c.GRAALVM_ARCH
|
c.GRAALVM_ARCH
|
||||||
}-${version}`
|
}-${version}`
|
||||||
}
|
}
|
||||||
|
|
||||||
function determineToolName(
|
function determineLegacyToolName(
|
||||||
isEE: boolean,
|
isEE: boolean,
|
||||||
version: string,
|
version: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
@@ -143,11 +240,11 @@ function determineToolName(
|
|||||||
return `graalvm-${infix}-java${javaVersion}-${c.GRAALVM_PLATFORM}`
|
return `graalvm-${infix}-java${javaVersion}-${c.GRAALVM_PLATFORM}`
|
||||||
}
|
}
|
||||||
|
|
||||||
async function downloadGraalVMCE(
|
async function downloadGraalVMCELegacy(
|
||||||
version: string,
|
version: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const graalVMIdentifier = determineGraalVMIdentifier(
|
const graalVMIdentifier = determineGraalVMLegacyIdentifier(
|
||||||
false,
|
false,
|
||||||
version,
|
version,
|
||||||
javaVersion
|
javaVersion
|
||||||
|
|||||||
32
src/gu.ts
32
src/gu.ts
@@ -1,6 +1,9 @@
|
|||||||
|
import * as c from './constants'
|
||||||
|
import * as core from '@actions/core'
|
||||||
import {GRAALVM_PLATFORM} from './constants'
|
import {GRAALVM_PLATFORM} from './constants'
|
||||||
import {exec} from './utils'
|
import {exec} from './utils'
|
||||||
import {join} from 'path'
|
import {join} from 'path'
|
||||||
|
import {gte as semverGte, valid as semverValid} from 'semver'
|
||||||
|
|
||||||
const BASE_FLAGS = ['--non-interactive', 'install', '--no-progress']
|
const BASE_FLAGS = ['--non-interactive', 'install', '--no-progress']
|
||||||
const COMPONENT_TO_POST_INSTALL_HOOK = new Map<string, Map<string, string>>([
|
const COMPONENT_TO_POST_INSTALL_HOOK = new Map<string, Map<string, string>>([
|
||||||
@@ -22,6 +25,35 @@ const COMPONENT_TO_POST_INSTALL_HOOK = new Map<string, Map<string, string>>([
|
|||||||
])
|
])
|
||||||
|
|
||||||
export async function setUpGUComponents(
|
export async function setUpGUComponents(
|
||||||
|
javaVersion: string,
|
||||||
|
graalVMVersion: string,
|
||||||
|
graalVMHome: string,
|
||||||
|
components: string[],
|
||||||
|
gdsToken: string
|
||||||
|
): Promise<void> {
|
||||||
|
if (components.length == 0) {
|
||||||
|
return // nothing to do
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
graalVMVersion === c.VERSION_DEV ||
|
||||||
|
javaVersion === c.VERSION_DEV ||
|
||||||
|
(semverValid(javaVersion) && semverGte(javaVersion, '21'))
|
||||||
|
) {
|
||||||
|
core.warning(
|
||||||
|
`Unable to install component(s): '${components.join(
|
||||||
|
','
|
||||||
|
)}'. The latest GraalVM dev builds and the upcoming GraalVM for JDK 21 no longer include the GraalVM Updater: https://github.com/oracle/graal/issues/6855`
|
||||||
|
)
|
||||||
|
} else if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
||||||
|
core.warning(
|
||||||
|
`Mandrel does not support GraalVM component(s): '${components.join(',')}'`
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
await installGUComponents(gdsToken, graalVMHome, components)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function installGUComponents(
|
||||||
gdsToken: string,
|
gdsToken: string,
|
||||||
graalVMHome: string,
|
graalVMHome: string,
|
||||||
components: string[]
|
components: string[]
|
||||||
|
|||||||
135
src/main.ts
135
src/main.ts
@@ -1,6 +1,7 @@
|
|||||||
import * as c from './constants'
|
import * as c from './constants'
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as graalvm from './graalvm'
|
import * as graalvm from './graalvm'
|
||||||
|
import * as semver from 'semver'
|
||||||
import {isFeatureAvailable as isCacheAvailable} from '@actions/cache'
|
import {isFeatureAvailable as isCacheAvailable} from '@actions/cache'
|
||||||
import {join} from 'path'
|
import {join} from 'path'
|
||||||
import {restore} from './features/cache'
|
import {restore} from './features/cache'
|
||||||
@@ -14,9 +15,10 @@ import {setUpNativeImageBuildReports} from './features/reports'
|
|||||||
|
|
||||||
async function run(): Promise<void> {
|
async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const graalvmVersion = core.getInput(c.INPUT_VERSION, {required: true})
|
|
||||||
const gdsToken = core.getInput(c.INPUT_GDS_TOKEN)
|
|
||||||
const javaVersion = core.getInput(c.INPUT_JAVA_VERSION, {required: true})
|
const javaVersion = core.getInput(c.INPUT_JAVA_VERSION, {required: true})
|
||||||
|
const distribution = core.getInput(c.INPUT_DISTRIBUTION)
|
||||||
|
const graalVMVersion = core.getInput(c.INPUT_VERSION)
|
||||||
|
const gdsToken = core.getInput(c.INPUT_GDS_TOKEN)
|
||||||
const componentsString: string = core.getInput(c.INPUT_COMPONENTS)
|
const componentsString: string = core.getInput(c.INPUT_COMPONENTS)
|
||||||
const components: string[] =
|
const components: string[] =
|
||||||
componentsString.length > 0
|
componentsString.length > 0
|
||||||
@@ -29,36 +31,102 @@ async function run(): Promise<void> {
|
|||||||
const enableNativeImageMusl = core.getInput(c.INPUT_NI_MUSL) === 'true'
|
const enableNativeImageMusl = core.getInput(c.INPUT_NI_MUSL) === 'true'
|
||||||
|
|
||||||
if (c.IS_WINDOWS) {
|
if (c.IS_WINDOWS) {
|
||||||
setUpWindowsEnvironment(graalvmVersion)
|
setUpWindowsEnvironment(graalVMVersion)
|
||||||
}
|
}
|
||||||
await setUpDependencies(components)
|
await setUpDependencies(components)
|
||||||
if (enableNativeImageMusl) {
|
if (enableNativeImageMusl) {
|
||||||
await setUpNativeImageMusl()
|
await setUpNativeImageMusl()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download or build GraalVM
|
// Download GraalVM JDK
|
||||||
|
const isGraalVMforJDK17OrLater =
|
||||||
|
distribution.length > 0 || graalVMVersion.length == 0
|
||||||
let graalVMHome
|
let graalVMHome
|
||||||
switch (graalvmVersion) {
|
if (isGraalVMforJDK17OrLater) {
|
||||||
case c.VERSION_LATEST:
|
switch (distribution) {
|
||||||
graalVMHome = await graalvm.setUpGraalVMLatest(gdsToken, javaVersion)
|
case c.DISTRIBUTION_GRAALVM:
|
||||||
break
|
graalVMHome = await graalvm.setUpGraalVMJDK(javaVersion)
|
||||||
case c.VERSION_DEV:
|
break
|
||||||
graalVMHome = await graalvm.setUpGraalVMDevBuild(gdsToken, javaVersion)
|
case c.DISTRIBUTION_GRAALVM_COMMUNITY:
|
||||||
break
|
graalVMHome = await graalvm.setUpGraalVMJDKCE(javaVersion)
|
||||||
default:
|
break
|
||||||
if (graalvmVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
case c.DISTRIBUTION_MANDREL:
|
||||||
graalVMHome = await setUpMandrel(graalvmVersion, javaVersion)
|
if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
||||||
} else {
|
graalVMHome = await setUpMandrel(graalVMVersion, javaVersion)
|
||||||
if (enableCheckForUpdates) {
|
} else {
|
||||||
await checkForUpdates(graalvmVersion, javaVersion)
|
throw new Error(
|
||||||
|
`Mandrel requires the 'version' option (see https://github.com/graalvm/setup-graalvm/tree/main#options).`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
graalVMHome = await graalvm.setUpGraalVMRelease(
|
break
|
||||||
gdsToken,
|
case '':
|
||||||
graalvmVersion,
|
if (javaVersion === c.VERSION_DEV) {
|
||||||
javaVersion
|
core.info(
|
||||||
)
|
`This build is using GraalVM Community Edition. To select a specific distribution, use the 'distribution' option (see https://github.com/graalvm/setup-graalvm/tree/main#options).`
|
||||||
}
|
)
|
||||||
break
|
graalVMHome = await graalvm.setUpGraalVMJDKDevBuild()
|
||||||
|
} else {
|
||||||
|
core.info(
|
||||||
|
`This build is using the new Oracle GraalVM. To select a specific distribution, use the 'distribution' option (see https://github.com/graalvm/setup-graalvm/tree/main#options).`
|
||||||
|
)
|
||||||
|
graalVMHome = await graalvm.setUpGraalVMJDK(javaVersion)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
throw new Error(`Unsupported distribution: ${distribution}`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (graalVMVersion) {
|
||||||
|
case c.VERSION_LATEST:
|
||||||
|
if (
|
||||||
|
javaVersion.startsWith('17') ||
|
||||||
|
(semver.valid(javaVersion) && semver.gte(javaVersion, '20.0.0'))
|
||||||
|
) {
|
||||||
|
core.info(
|
||||||
|
`This build is using the new Oracle GraalVM. To select a specific distribution, use the 'distribution' option (see https://github.com/graalvm/setup-graalvm/tree/main#options).`
|
||||||
|
)
|
||||||
|
graalVMHome = await graalvm.setUpGraalVMJDK(javaVersion)
|
||||||
|
} else {
|
||||||
|
graalVMHome = await graalvm.setUpGraalVMLatest_22_X(
|
||||||
|
gdsToken,
|
||||||
|
javaVersion
|
||||||
|
)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case c.VERSION_DEV:
|
||||||
|
if (gdsToken.length > 0) {
|
||||||
|
throw new Error(
|
||||||
|
'Downloading GraalVM EE dev builds is not supported'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
const coercedJavaVersion = semver.coerce(javaVersion)
|
||||||
|
if (
|
||||||
|
coercedJavaVersion !== null &&
|
||||||
|
!semver.gte(coercedJavaVersion, '21.0.0')
|
||||||
|
) {
|
||||||
|
core.warning(
|
||||||
|
`GraalVM dev builds are only available for JDK 21. This build is now using a stable release of GraalVM for JDK ${javaVersion}.`
|
||||||
|
)
|
||||||
|
graalVMHome = await graalvm.setUpGraalVMJDK(javaVersion)
|
||||||
|
} else {
|
||||||
|
graalVMHome = await graalvm.setUpGraalVMJDKDevBuild()
|
||||||
|
}
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
if (graalVMVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
||||||
|
graalVMHome = await setUpMandrel(graalVMVersion, javaVersion)
|
||||||
|
} else {
|
||||||
|
if (enableCheckForUpdates) {
|
||||||
|
await checkForUpdates(graalVMVersion, javaVersion)
|
||||||
|
}
|
||||||
|
graalVMHome = await graalvm.setUpGraalVMRelease(
|
||||||
|
gdsToken,
|
||||||
|
graalVMVersion,
|
||||||
|
javaVersion
|
||||||
|
)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Activate GraalVM
|
// Activate GraalVM
|
||||||
@@ -69,21 +137,18 @@ async function run(): Promise<void> {
|
|||||||
core.exportVariable('JAVA_HOME', graalVMHome)
|
core.exportVariable('JAVA_HOME', graalVMHome)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up GraalVM components (if any)
|
await setUpGUComponents(
|
||||||
if (components.length > 0) {
|
javaVersion,
|
||||||
if (graalvmVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
graalVMVersion,
|
||||||
core.warning(
|
graalVMHome,
|
||||||
`Mandrel does not support GraalVM components: ${componentsString}`
|
components,
|
||||||
)
|
gdsToken
|
||||||
} else {
|
)
|
||||||
await setUpGUComponents(gdsToken, graalVMHome, components)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cache && isCacheAvailable()) {
|
if (cache && isCacheAvailable()) {
|
||||||
await restore(cache)
|
await restore(cache)
|
||||||
}
|
}
|
||||||
setUpNativeImageBuildReports(graalvmVersion)
|
setUpNativeImageBuildReports(isGraalVMforJDK17OrLater, graalVMVersion)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof Error) core.setFailed(error.message)
|
if (error instanceof Error) core.setFailed(error.message)
|
||||||
}
|
}
|
||||||
|
|||||||
18
src/utils.ts
18
src/utils.ts
@@ -63,6 +63,24 @@ export async function getTaggedRelease(
|
|||||||
).data
|
).data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getMatchingTags(
|
||||||
|
tagPrefix: string
|
||||||
|
): Promise<c.MatchingRefsResponse['data']> {
|
||||||
|
const githubToken = getGitHubToken()
|
||||||
|
const options = githubToken.length > 0 ? {auth: githubToken} : {}
|
||||||
|
const octokit = new GitHubDotCom(options)
|
||||||
|
return (
|
||||||
|
await octokit.request(
|
||||||
|
'GET /repos/{owner}/{repo}/git/matching-refs/tags/{tagPrefix}',
|
||||||
|
{
|
||||||
|
owner: c.GRAALVM_GH_USER,
|
||||||
|
repo: c.GRAALVM_RELEASES_REPO,
|
||||||
|
tagPrefix
|
||||||
|
}
|
||||||
|
)
|
||||||
|
).data
|
||||||
|
}
|
||||||
|
|
||||||
export async function downloadAndExtractJDK(
|
export async function downloadAndExtractJDK(
|
||||||
downloadUrl: string
|
downloadUrl: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
|
|||||||
Reference in New Issue
Block a user