Skip to content

graalvm*: add CE JDK 17 and fix CE JDK 21 checkver#592

Open
B67687 wants to merge 2 commits intoScoopInstaller:masterfrom
B67687:graalvm-ce-17jdk
Open

graalvm*: add CE JDK 17 and fix CE JDK 21 checkver#592
B67687 wants to merge 2 commits intoScoopInstaller:masterfrom
B67687:graalvm-ce-17jdk

Conversation

@B67687
Copy link
Copy Markdown
Contributor

@B67687 B67687 commented Apr 23, 2026

Relates to #472
Relates to #508

This handles the still-useful Community Edition part of #508 without reusing its stale manifest shape directly.

Changes:

Design decisions:

  • graalvm-ce-17jdk uses the same extract_to plus installer move pattern as the existing newer GraalVM manifests, so it does not depend on the internal extracted directory name.
  • graalvm21-jdk21 already covers the Community JDK 21 package requested in graalvm-ce-jdk: add version 17.0.9 and 21.0.2 #508, so this PR fixes its version detection rather than adding a duplicate manifest under another name.
  • The version source is the official graalvm/graalvm-ce-builds GitHub releases API, not a third-party source.

Validation:

  • checkver.ps1 graalvm-ce-17jdk -> 17.0.9

  • checkver.ps1 graalvm21-jdk21 -> 21.0.2

  • checkurls.ps1 graalvm-ce-17jdk -> [1][1][0]

  • checkurls.ps1 graalvm21-jdk21 -> [1][1][0]

  • I have read the Contributing Guide.

Summary by CodeRabbit

  • New Features

    • Added GraalVM Community Edition JDK 17 for Windows x64 with packaged installer and automatic environment setup (PATH, JAVA_HOME, GRAALVM_HOME).
  • Improvements

    • Improved version checking for GraalVM JDK 21 to provide more reliable and timely update detection.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 23, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d022a812-c36e-47e4-a1fb-c29a8e4363eb

📥 Commits

Reviewing files that changed from the base of the PR and between 5878ad9 and 35d97bd.

📒 Files selected for processing (2)
  • bucket/graalvm-ce-17jdk.json
  • bucket/graalvm21-jdk21.json
✅ Files skipped from review due to trivial changes (1)
  • bucket/graalvm-ce-17jdk.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • bucket/graalvm21-jdk21.json

Walkthrough

Adds a new GraalVM Community Edition JDK 17 Windows x64 package manifest and updates the GraalVM 21 JDK 21 manifest's checkver to use the GitHub Releases API with JSON path extraction and stricter version regex.

Changes

Cohort / File(s) Summary
GraalVM CE JDK 17 Package
bucket/graalvm-ce-17jdk.json
New manifest added: GitHub release download URL and SHA-256, extraction to temp, PowerShell installer moves files to target and removes temp, sets JAVA_HOME/GRAALVM_HOME and adds bin to PATH, checkver/autoupdate configured with jdk-(17[\d.]+) regex.
GraalVM 21 JDK 21 Checkver Update
bucket/graalvm21-jdk21.json
checkver changed to query GitHub Releases API (list of releases), uses jsonpath to extract tag_name values and applies stricter jdk-(21\.[\d.]+) regex for version matching.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Scoop
    participant GitHub as GitHub Releases API
    participant Installer as PowerShell Installer
    participant FS as Filesystem/Env

    User->>Scoop: request install graalvm-ce-17jdk
    Scoop->>GitHub: fetch release list (checkver / autoupdate)
    GitHub-->>Scoop: return JSON with tag_name and asset URLs
    Scoop->>Scoop: resolve version & download URL
    Scoop->>Installer: run installer script with downloaded archive
    Installer->>FS: extract to temp, move files to install dir
    Installer->>FS: set `JAVA_HOME`/`GRAALVM_HOME`, add `bin` to PATH
    Installer->>FS: remove temp files
    Installer-->>Scoop: install complete
    Scoop-->>User: installation finished
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

review-needed

Suggested reviewers

  • se35710
  • chawyehsu

Poem

🐰 I hopped to fetch a shiny JDK,
Downloaded, moved, and hopped away.
Tags and checks from GitHub's shore,
Binaries placed, environment set—hooray! 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the two main changes: adding GraalVM CE JDK 17 and fixing the checkver for CE JDK 21.
Description check ✅ Passed The description provides comprehensive details including related issues, clear change summary, design decisions, and validation results. The author confirmed reading the Contributing Guide.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 23, 2026

✅ Actions performed

Full review triggered.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 23, 2026

✅ Actions performed

Reviews resumed.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
bucket/graalvm-ce-17jdk.json (1)

20-24: checkver config LGTM; optional regex tightening.

Mirrors the pattern now used in graalvm21-jdk21.json; jsonpath: $[*].tag_name against releases?per_page=100 correctly yields tag strings for the regex filter.

Optional nit (same as the sibling manifest): jdk-(17[\d.]+) would match a tag like jdk-170.x if one ever appeared. Using jdk-(17\.[\d.]+) is a touch stricter. Purely defensive — safe to ignore.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bucket/graalvm-ce-17jdk.json` around lines 20 - 24, The checkver block's
regex "jdk-(17[\\d.]+)" is permissive and could match unintended tags; update
the regex in the checkver section to the stricter pattern "jdk-(17\\.[\\d.]+)"
(i.e., modify the regex value in the checkver object) so it requires a dot after
"17" and avoids matching things like "jdk-170.x".
bucket/graalvm21-jdk21.json (1)

21-23: checkver switch to Releases API LGTM.

Querying /releases?per_page=100 and extracting tag names via jsonpath correctly avoids the /releases/latest HTML endpoint that was pinned to the 25.x train, so the existing jdk-(21[\d.]+) regex can now pick up the latest jdk-21.x tag among the paged results. Current release cadence on graalvm/graalvm-ce-builds keeps the relevant 21.x tags well within the first 100 entries.

Optional nit: the regex could be tightened to jdk-(21\.[\d.]+) so it doesn't match a hypothetical jdk-21X... tag (e.g. jdk-210.0.0). Not a real-world risk today, purely defensive.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bucket/graalvm21-jdk21.json` around lines 21 - 23, Tighten the release-tag
regex used for checkver: replace the current "regex" value jdk-(21[\d.]+) with a
more defensive pattern that requires a dot after 21 (e.g. jdk-(21\.[\d.]+));
update the "regex" field in the JSON (the entry with keys "url", "jsonpath",
"regex") so it only matches tags like jdk-21.x and not hypothetical jdk-210...
tags.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@bucket/graalvm-ce-17jdk.json`:
- Around line 20-24: The checkver block's regex "jdk-(17[\\d.]+)" is permissive
and could match unintended tags; update the regex in the checkver section to the
stricter pattern "jdk-(17\\.[\\d.]+)" (i.e., modify the regex value in the
checkver object) so it requires a dot after "17" and avoids matching things like
"jdk-170.x".

In `@bucket/graalvm21-jdk21.json`:
- Around line 21-23: Tighten the release-tag regex used for checkver: replace
the current "regex" value jdk-(21[\d.]+) with a more defensive pattern that
requires a dot after 21 (e.g. jdk-(21\.[\d.]+)); update the "regex" field in the
JSON (the entry with keys "url", "jsonpath", "regex") so it only matches tags
like jdk-21.x and not hypothetical jdk-210... tags.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 28b087af-1347-4a0b-ae88-be1e829ff9c8

📥 Commits

Reviewing files that changed from the base of the PR and between aded4b6 and 5878ad9.

📒 Files selected for processing (2)
  • bucket/graalvm-ce-17jdk.json
  • bucket/graalvm21-jdk21.json

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@B67687
Copy link
Copy Markdown
Contributor Author

B67687 commented Apr 25, 2026

This is the CE side of the long-running GraalVM request in #472.

It adds graalvm-ce-17jdk using the naming discussed there, and fixes graalvm21-jdk21 checkver so it can still resolve the 21 line from the official GraalVM CE releases source.

CI and CodeRabbit are clean now, so I thought I’d flag it in case it helps with review.

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