Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
terminal

GitHub Action

GitHub Action for GraalVM

v1.0.0

GitHub Action for GraalVM

terminal

GitHub Action for GraalVM

Set up a specific version of the GraalVM JDK and add the command-line tools to the PATH

Installation

Copy and paste the following snippet into your .yml file.

              

- name: GitHub Action for GraalVM

uses: graalvm/setup-graalvm@v1.0.0

Learn more about this action in graalvm/setup-graalvm

Choose a version

GitHub Action for GraalVM build-test

This GitHub action sets up GraalVM Community Edition and GraalVM components such as Native Image and GraalVM 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
    (GraalVM tools such as gu and GraalVM languages can be invoked directly)
  • sets $JAVA_HOME to $GRAALVM_HOME by default
    (can be disabled via set-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, '21.3.0']
        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., 22.0.0) for a specific GraalVM release
latest 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, or
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.

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.