Skip to content

ci(build): switch CI from JDK 17 to GraalVM JDK 25#16

Merged
bluestreak01 merged 1 commit intomainfrom
vi_ci
Apr 25, 2026
Merged

ci(build): switch CI from JDK 17 to GraalVM JDK 25#16
bluestreak01 merged 1 commit intomainfrom
vi_ci

Conversation

@bluestreak01
Copy link
Copy Markdown
Member

Summary

Bumps the JDK used across all CI jobs from Temurin JDK 17 to Oracle GraalVM JDK 25 (latest). The Java source/target level (<javac.target>11</javac.target>) is unchanged — only the build/test toolchain moves.

Files changed

  • ci/setup.yaml — replaces the JavaToolInstaller@0 step with platform-conditional GraalVM 25 download steps for Linux, macOS (x64 + arm64) and Windows. Sets JAVA_HOME via ##vso[task.setvariable] and prepends bin to PATH, so existing Maven@3 steps using jdkVersionOption: "default" pick it up.
  • ci/run_tests_pipeline.yaml — the Javadoc validation job now consumes the setup.yaml template instead of inlining its own JavaToolInstaller. Added jdkArch/imageName job variables so the template's conditions resolve.
  • .github/workflows/rebuild_native_libs.yml — both Linux native-build jobs (x86_64 manylinux2014, aarch64 manylinux_2_28) now fetch GraalVM 25 for jni.h. The Windows cross-compile job also installs GraalVM 25 and now pulls Windows-specific jni_md.h from openjdk/jdk25u. The macOS native-build jobs were left alone — they never installed a JDK explicitly and rely on the runner's pre-installed one.

Notes / trade-offs

  • URLs use Oracle's …/graalvm/25/latest/… pattern, which is mutable. If you'd prefer reproducible pins, swap in versioned URLs like https://download.oracle.com/graalvm/25/archive/graalvm-jdk-25.0.x_<os>-<arch>_bin.<ext>.
  • Oracle GraalVM ships under the GFTC license (free for production use). If GraalVM CE (GPLv2+CPE) is preferred, the URL pattern changes to the graalvm/graalvm-ce-builds GitHub releases.
  • manylinux2014 (CentOS 7 / glibc 2.17) is older than what Oracle GraalVM 25 binaries officially target. This workflow only reads include/jni.h from the tarball — it never executes Java — so extraction is what matters and that works regardless of glibc.

Test plan

  • Azure Pipelines BuildAndTest stage passes on linux-x64, mac-aarch64, mac-x64, windows-msvc-2022-x64
  • Azure Pipelines Validate (Javadoc) job passes
  • Azure Pipelines Coverage stage passes
  • Manually trigger rebuild_native_libs.yml on this branch and confirm linux-x86_64, linux-aarch64 and windows cross-compile jobs all build successfully

🤖 Generated with Claude Code

- ci/setup.yaml: replace pre-installed JDK 17 task with platform-conditional
  GraalVM JDK 25 download for Linux, macOS (x64+arm64) and Windows; sets
  JAVA_HOME and prepends bin so existing Maven@3 steps using
  jdkVersionOption: "default" pick it up.
- ci/run_tests_pipeline.yaml: refactor the Javadoc job to consume the
  setup.yaml template instead of inlining its own JavaToolInstaller.
- .github/workflows/rebuild_native_libs.yml: linux x86_64 and aarch64
  native-build jobs now fetch GraalVM JDK 25 for jni.h; the Windows
  cross-compile job also installs GraalVM JDK 25 and now pulls Windows
  jni_md.h from openjdk/jdk25u.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bluestreak01 bluestreak01 changed the title chore(ci): switch CI from JDK 17 to GraalVM JDK 25 ci: switch CI from JDK 17 to GraalVM JDK 25 Apr 25, 2026
@bluestreak01 bluestreak01 changed the title ci: switch CI from JDK 17 to GraalVM JDK 25 ci(build): switch CI from JDK 17 to GraalVM JDK 25 Apr 25, 2026
@bluestreak01 bluestreak01 merged commit b400a5a into main Apr 25, 2026
12 checks passed
@bluestreak01 bluestreak01 deleted the vi_ci branch April 25, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant