graalvm/setup-graalvmでGraalVM innovation releaseを使う際にはまったこと

このエントリは2026/07/07現在の情報に基づいています。将来の機能追加や変更に伴い、記載事項からの乖離が発生する可能性があります。

何が起こったか?

GraalVM 25.1が出たとのことなので、GitHub Actionsで使うGraalVMバージョンも変更したところ、Actionsでビルドエラーが出てしまう、という状況に遭遇した。 現在GitHub Actionsでは、graalvm/setup-graalvmを使って、Java 25.0.3 (最新のLTS) を使っている。

...
jobs:
  build:
    runs-on: ubuntu-24.04
    steps:
    - name: checkout codes
      uses: actions/checkout@v7

    - name: checkout codes and setup GraalVM
      uses: graalvm/setup-graalvm@v1.6.1
      with:
        java-version: '25.0.3'
        distribution: 'graalvm'
        github-token: ${{ secrets.GITHUB_TOKEN }}
        
    - name: Run JVM tests
      run: mvn -B -Dpackaging=jar test
...

GraalVMのダウンロードページには、以下のような設定で動作するような表現がある(25.1.3というバージョンは存在しないので、おそらく25.0.3から25.1にするのを間違えたか、あくまでも例として出しているものと予想)。

オプションの設定方法はこちらにも記載がある。

Set up your GitHub Actions workflow with a specific GraalVM distribution.
https://github.com/graalvm/setup-graalvm

これらの情報を見ると、上記YAMLの12行目に、25.1を指定すればよさそうに見える。

実際に試す

...
jobs:
  build:
    runs-on: ubuntu-24.04
    steps:
    - name: checkout codes
      uses: actions/checkout@v7

    - name: checkout codes and setup GraalVM
      uses: graalvm/setup-graalvm@v1.6.1
      with:
        java-version: '25.1'
        distribution: 'graalvm'
        github-token: ${{ secrets.GITHUB_TOKEN }}
        
    - name: Run JVM tests
      run: mvn -B -Dpackaging=jar test
...

ところがこれを実行すると、以下のような例外が出てGitHub Actionsが停止する。

java-versionというオプションで、25.1をサポートしていないように見える(25.1.0を指定したら、「そんなバージョンはダウンロードできへんわ、おまえ間違えてへんか?」と怒られる)。

原因

java-versionで指定できるのはJavaのバージョンであり、GraalVMのバージョンではないから。

実のところ、graalvm/setup-graalvmでバージョン指定をする場合、以下の2個のオプションが利用できる。

  • java-version
  • version

リポジトリのREADME.mdに意味と使い分けが記載されているが、Java versionは25.0.3、25,0.4…というようなもの。それに対しGraalVMのバージョン、特に今回のInnovation releaseの場合は25.1であり、Java versionとは一致しない。そのため、上記例外が発生した、というわけ。

修正する

今回は、versionとして 25.1 を指定すればよいので、12行目を以下のように変更した。

...
jobs:
  build:
    runs-on: ubuntu-24.04
    steps:
    - name: checkout codes
      uses: actions/checkout@v7

    - name: checkout codes and setup GraalVM
      uses: graalvm/setup-graalvm@v1.6.1
      with:
        version: '25.1'
        distribution: 'graalvm'
        github-token: ${{ secrets.GITHUB_TOKEN }}
        
    - name: Run JVM tests
      run: mvn -B -Dpackaging=jar test
...

これでおしまい。これにより、問題なく動作するようになった(Innovation releaseを使ってビルドできた)。

Innovation releaseを使うなら

GraalVMはJavaのリリースサイクルから切り離され、独自のリリースサイクルに切り替わっている。そのため、java-versionを使ったバージョン指定はこれまで通り可能だが、innovation releaseを使うのであれば、versionを使って指定する必要がある。

Detaching GraalVM from the Java Ecosystem Train
https://blogs.oracle.com/java/detaching-graalvm-from-the-java-ecosystem-train

Accelerating the GraalVM Release Train
https://medium.com/graalvm/accelerating-the-graalvm-release-train-26b0d7cff2ab

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください