Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (corretto, .java-version, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (corretto, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (corretto, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (corretto, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (corretto, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (corretto, .tool-versions, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (microsoft, .java-version, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (microsoft, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (microsoft, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (microsoft, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (microsoft, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (microsoft, .tool-versions, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (temurin, .java-version, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (temurin, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (temurin, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (temurin, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (temurin, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} (temurin, .tool-versions, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (corretto, .java-version, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (corretto, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (corretto, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (corretto, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (corretto, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (corretto, .tool-versions, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (liberica, .java-version, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (liberica, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (liberica, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (liberica, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (liberica, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (liberica, .tool-versions, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (microsoft, .java-version, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (microsoft, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (microsoft, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (microsoft, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (microsoft, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (microsoft, .tool-versions, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (temurin, .java-version, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (temurin, .java-version, windows-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (temurin, .tool-versions, macos-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (temurin, .tool-versions, ubuntu-latest) (push) Has been cancelled
Validate Java e2e / ${{ matrix.distribution }} version from file X - ${{ matrix.os }} (temurin, .tool-versions, windows-latest) (push) Has been cancelled
- installer: surface a clear error when the GraalVM Community releases
listing is not a JSON array, instead of silently treating an error
payload (rate limit, auth failure, etc.) as "no releases" which later
surfaced as a misleading "version not found" error.
- docs: fix the GraalVM Community advanced-usage example to check the
installed binary versions (java/native-image --version) rather than
running a non-existent HelloWorldApp classpath that fails when copied.
- tests: cover the new non-array release listing error path.
Rebuilt dist bundle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: note jdkfile approach for Early Access / unreleased JDK builds
Clarify in advanced-usage that the existing 'jdkfile' distribution can be
used to install Early Access (EA) or other unreleased JDK builds not
provided directly by setup-java, by downloading the archive in a prior
step and pointing jdkFile at it. Adds a concrete EA example.
Addresses #612.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Initial plan
* feat: add graalvm community distribution support
* build: update bundled dist for graalvm community support
* chore: address GraalVM community review feedback
* fix: tidy graalvm community validation follow-ups
* refactor: simplify GraalVM Community release resolution
* refactor: address review feedback on Community resolver
* refactor: rename pagination index for clarity
* test: fix graalvm installer test formatting
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Bruno Borges <brborges@microsoft.com>
* Harden workflows with least-privilege permissions and zizmor
Apply GitHub Actions security best practices to the action's own
workflows and integrate zizmor to catch regressions.
- Add explicit least-privilege `permissions:` to every workflow
(contents: read for read-only workflows; default-deny `{}` with
job-scoped grants for codeql, publish-immutable-actions and
update-config-files).
- Set `persist-credentials: false` on all checkout steps that don't
need the GITHUB_TOKEN afterwards.
- Move `${{ ... }}` expansions out of `run:` blocks into `env:` vars
to avoid template injection.
- Pin the alpine container image (alpine:latest -> alpine:3.21).
- Add a zizmor CI workflow that uploads SARIF to code scanning, plus a
`.github/zizmor.yml` pinning policy (ref-pin for actions/* and
github/*, hash-pin for third-party actions).
zizmor now reports no findings (offline and online).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Fix indentation of if: in zizmor SARIF upload step
The `if:` key on the "Upload SARIF results to code scanning" step had no
indentation, producing invalid YAML ("Nested mappings are not allowed in
compact mappings"). This broke `npm run format-check` (prettier) in Basic
validation.
Indent `if:` to 8 spaces so it nests under the step alongside uses/with.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Document how to make the installed JDK trust an internal CA at application
runtime by importing it into $JAVA_HOME/lib/security/cacerts with keytool
after setup-java runs. Clarifies this is the runtime trust layer, distinct
from the download/transport layer (NODE_EXTRA_CA_CERTS), and notes hosted vs
self-hosted persistence caveats.
Refs #640#1035
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds an advanced-usage section explaining the 'self signed certificate in
certificate chain' error seen on GitHub Enterprise Server and behind
TLS-inspecting proxies. Recommends the secure fix of trusting the internal
CA via NODE_EXTRA_CA_CERTS (or the OS trust store on self-hosted runners),
with a GitHub Enterprise callout, and warns against disabling TLS
verification since the JDK download has no checksum fallback.
Refs #640
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-22 21:51:01 -04:00
19 changed files with 767 additions and 77 deletions
@@ -120,6 +121,7 @@ Currently, the following distributions are supported:
> - AdoptOpenJDK got moved to Eclipse Temurin and won't be updated anymore. It is highly recommended to migrate workflows from `adopt` and `adopt-openj9`, to `temurin` and `semeru` respectively, to keep receiving software and security updates. See more details in the [Good-bye AdoptOpenJDK post](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/).
> - For Azul Zulu OpenJDK architectures x64 and arm64 are mapped to x86 / arm with proper hw_bitness.
> - To comply with the GraalVM Free Terms and Conditions (GFTC) license, it is recommended to use GraalVM JDK 17 version 17.0.12, as this is the only version of GraalVM JDK 17 available under the GFTC license. Additionally, it is encouraged to consider upgrading to GraalVM JDK 21, which offers the latest features and improvements.
> - GraalVM Community is available as `distribution: 'graalvm-community'` for stable JDK 17 and later releases published on GitHub.
**NOTE:** Oracle JDK 17 licensing varies by patch level. As shown on the [JDK 17 Archive](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) (versions up to 17.0.12 are under the [NFTC](https://www.oracle.com/downloads/licenses/no-fee-license.html) license) and the [JDK 17.0.13+ Archive](https://www.oracle.com/java/technologies/javase/jdk17-0-13-later-archive-downloads.html) (versions 17.0.13 and later are under the [OTN](https://www.oracle.com/downloads/licenses/javase-license1.html) license). To stay on the free NFTC license, use `distribution: 'oracle'` with `java-version: '17.0.12'` (or earlier) instead of the floating `'17'`. Alternatively, upgrade to Oracle JDK 21+, which remains under the NFTC license.
**NOTE:** GraalVM Community is available for stable JDK 17 and later releases.
```yaml
steps:
- uses:actions/checkout@v6
- uses:actions/setup-java@v5
with:
distribution:'graalvm-community'
java-version:'21'
- run:|
java --version
native-image --version
```
### JetBrains
**NOTE:** JetBrains is only available for LTS versions on 11 or later (11, 17, 21, etc.).
@@ -270,6 +286,9 @@ steps:
## Installing Java from local file
If your use-case requires a custom distribution or a version that is not provided by setup-java, you can download it manually and setup-java will take care of the installation and caching on the VM:
> [!NOTE]
> This approach also lets you use builds that setup-java does not provide directly, such as **Early Access (EA)** or other unreleased JDK builds (for example, an upcoming feature release or a Loom/Valhalla preview build). Download the desired archive in a prior step and point `jdkFile` at it; setup-java will extract, install, and cache it just like a supported distribution. When targeting multiple architectures, select the correct binary per architecture in your workflow (for example, with a build matrix).
```yaml
steps:
- run:|
@@ -285,6 +304,23 @@ steps:
- run:java --version
```
For example, to use an **Early Access** build from [jdk.java.net](https://jdk.java.net/), download the archive for your runner OS/architecture and install it via `distribution: 'jdkfile'` (example below assumes Linux x64):
If your use-case requires a custom distribution (in the example, alpine-linux is used) or a version that is not provided by setup-java and you want to always install the latest version during runtime, then you can use the following code to auto-download the latest JDK, determine the semver needed for setup-java, and setup-java will take care of the installation and caching on the VM:
`Ignoring pagination link with unexpected origin: ${nextUrl}`
);
returnnull;
}
returnnextUrl;
}
}
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.