Skip to content

ci(native): provision GraalVM with actions/setup-java instead of graalvm/setup-graalvm - #238

Merged
epugh merged 2 commits into
apache:mainfrom
adityamparikh:ci/native-setup-java-graalvm
Oct 6, 2026
Merged

epugh merged 2 commits into
apache:mainfrom
adityamparikh:ci/native-setup-java-graalvm

Conversation

@adityamparikh

@adityamparikh adityamparikh commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

What

Provisions GraalVM JDK 25 with GitHub's own actions/setup-java (distribution: graalvm) instead of graalvm/setup-graalvm, in native.yml (all three jobs) and the native-image job of release-publish.yml. dev-docs/DEVELOPMENT.md is updated to match.

Why

The ASF Actions allow-list removed graalvm/setup-graalvm@329c42c (v1.5.4) in apache/infrastructure-actions "Remove Expired Refs" on 2026-09-13. Since then every Native Image run on a PR has ended in startup_failure before any job starts (e.g. on #207, #214, #217, #220, #221). The native-image job in release-publish.yml pins the same SHA, so the next release would fail the same way.

Moving to the next allow-listed setup-graalvm SHA would only postpone this: every remaining pin has an expires_at (the newest, v1.6.2, expires 2026-10-08). GitHub-owned actions/* pass the allow-list by pattern, and actions/setup-java downloads Oracle GraalVM directly, so this pin can't expire.

Verification

native.yml dispatched on the fork at this branch (run):

  • Setup installed Oracle GraalVM 25.0.4+7.1
  • nativeTest: success (280 run, 0 failed; 138 skipped are the @DisabledInNativeImage mock tests)
  • native Docker image (stdio) + integration: success
  • native Docker image (http) + integration: success
  • JVM vs native benchmark: success

🤖 Generated with Claude Code

…lvm/setup-graalvm

The ASF Actions allow-list removed graalvm/setup-graalvm@329c42c (v1.5.4)
on 2026-09-13, so every Native Image run since has ended in
startup_failure, and the release workflow's native-image job would fail
the same way. actions/setup-java supports distribution: graalvm and, being
GitHub-owned, passes the allow-list by pattern, so the pin can no longer
expire out from under us.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Aditya Parikh <aditya.m.parikh@gmail.com>
Comment thread .github/workflows/native.yml Outdated

- name: Set up GraalVM JDK 25
uses: graalvm/setup-graalvm@329c42c5f4c343bceb505f0b28cc8499bc2bf174 # v1.5.4 (ASF-allow-listed, no expiry)
uses: actions/setup-java@v4

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we are supposed to use a @hash here, and then a comment with # v4.....

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in fc9c5cd: all four actions/setup-java uses (three in native.yml, one in release-publish.yml) are now pinned as actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4.9.1, the commit v4 points to, so behaviour is unchanged. Re-ran native.yml on the fork at that commit and all four jobs passed: https://github.com/adityamparikh/solr-mcp/actions/runs/37512113581

Reference actions/setup-java by full commit SHA with the release tag as
a trailing comment, matching the existing actions/upload-artifact pins,
so the workflow runs exactly the reviewed code.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Aditya Parikh <aditya.m.parikh@gmail.com>
@epugh

epugh commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

hash looks great, thanks!

@epugh
epugh merged commit 3e3055b into apache:main Oct 6, 2026
adityamparikh added a commit to adityamparikh/solr-mcp that referenced this pull request Oct 6, 2026
Brings in apache#195 apache#200 apache#207 apache#212 apache#214 apache#215 apache#221 apache#230 apache#231 apache#233 apache#234 apache#235
apache#238 apache#239 apache#242 apache#243 apache#244 apache#247 and apache#191 apache#192, keeping the Spring Boot 4.1 /
Spring AI 2.0 / Jackson 3 / Boot OTel starter line.

Resolutions beyond the textual conflicts:

- libs.versions.toml: keep sb4's plugin versions, add main's
  changelog-plugin.
- build.gradle.kts (nativeTest args): keep sb4's removal of the manual
  org.junit.platform.* build-time init (GraalVM plugin >= 0.11 does it),
  take main's -H:IncludeResources=shows-markdown\.md.
- buildSrc: cyclonedx-core-java 10.2.1 -> 13.1.0, the version the
  cyclonedx 3.4.1 plugin uses. apache#247 pinned it to match plugin 2.4.1; the
  older model on buildSrc's classpath shadowed the plugin's and failed
  cyclonedxDirectBom (no Version.VERSION_17).
- AliasService (apache#214): MCP annotations from org.springframework.ai.mcp.
- ShowsSampleDataTest (apache#207): Jackson 3 JsonMapper.
- Tests from apache#195/apache#207/apache#212: add the explicit Assertions static imports
  sb4 uses in place of main's wildcard.
- docs/observability.md: rewrite apache#230's Boot 3 text (gRPC 4317, one
  shared endpoint, OTel-semconv metric names, /actuator/prometheus,
  kebab-case span names) for OTLP/HTTP per-signal URLs, Micrometer
  metrics in milliseconds and ClassName#method spans.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Aditya Parikh <aditya.m.parikh@gmail.com>
@adityamparikh
adityamparikh deleted the ci/native-setup-java-graalvm branch October 7, 2026 02:13
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.

2 participants