mirror of
https://github.com/graalvm/setup-graalvm.git
synced 2025-01-19 03:43:02 +08:00
GitHub Action for GraalVM
This GitHub action sets up GraalVM Community Edition and GraalVM components such as Native Image and Truffle languages.
Key Features
This action:
- supports GraalVM CE releases, dev builds, and Mandrel (see options)
- has built-in support for GraalVM components and the GraalVM updater
- exports a
$GRAALVM_HOME
environment variable - adds
$GRAALVM_HOME/bin
to the$PATH
environment variable
(Truffle languages and tools can be invoked directly) - sets
$JAVA_HOME
to$GRAALVM_HOME
by default
(can be disabled viaset-java-home: 'false'
, see options) - sets up Windows environments with build tools using vcvarsall.bat
Templates
Quickstart Template
name: GraalVM build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: graalvm/setup-graalvm@v1
with:
version: 'latest'
java-version: '11'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Example step
run: |
echo "GRAALVM_HOME: $GRAALVM_HOME"
echo "JAVA_HOME: $JAVA_HOME"
java --version
gu --version
native-image --version
Complex Native Image Template
name: GraalVM Native Image build
on: [push, pull_request]
jobs:
build:
name: ${{ matrix.version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
version: [latest, dev, '22.0.0.2']
os: [macos-latest, windows-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v2
- uses: graalvm/setup-graalvm@v1
with:
version: ${{ matrix.version }}
java-version: '11'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build and run HelloWorld.java
run: |
javac HelloWorld.java
native-image HelloWorld
./helloworld
if: runner.os != 'Windows'
- name: Build and run HelloWorld.java on Windows
run: |
javac.exe HelloWorld.java
native-image.cmd HelloWorld
./helloworld.exe
if: runner.os == 'Windows'
- name: Upload binary
uses: actions/upload-artifact@v2
with:
name: helloworld-${{ matrix.os }}-${{ matrix.version }}
path: helloworld*
Options
Name | Default | Description |
---|---|---|
version (required) |
n/a | X.Y.Z (e.g., 21.3.0 ) for a specific GraalVM releaselatest for latest stable release,dev for latest dev build,mandrel-X.Y.Z (e.g., mandrel-21.3.0.0-Final ) for a specific Mandrel release,mandrel-latest for latest Mandrel stable release. |
java-version (required) |
n/a | '11' or '17' for a specific Java version.( '8' and '16' are supported for GraalVM 21.2 and earlier.) |
components |
'' |
Comma-spearated list of GraalVM components (e.g., native-image or ruby,nodejs ) that will be installed by the GraalVM Updater. |
github-token |
'' |
Token for communication with the GitHub API. Please set to ${{ secrets.GITHUB_TOKEN }} (see 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. |
native-image-musl |
'false' |
If set to 'true' , sets up musl for building static images with GraalVM Native Image (Linux only). Example usage (be sure to replace uses: ./ with uses: graalvm/setup-graalvm@v1 ). |
Contributing
We welcome code contributions. To get started, you will need to sign the Oracle Contributor Agreement (OCA).
Only pull requests from committers that can be verified as having signed the OCA can be accepted.
Languages
TypeScript
99.8%
JavaScript
0.2%