Add Java distribution option to java action

Introduce a new `distribution` input (default: temurin) to the custom GitHub Action .github/actions/java/action.yml. Validate supported distributions (temurin, microsoft), propagate JAVA_DISTRIBUTION into the runner env, and adapt macOS x64 handling and error messaging to include distribution/architecture. Verify java -version output matches the chosen distribution. Update workflows (multiOSReleases.yml, tauri-build.yml) to select microsoft for windows-11-arm and temurin for other platforms.
This commit is contained in:
Ludy87
2026-08-25 07:50:03 +02:00
parent d2c408c8ea
commit 7401305e85
4 changed files with 37 additions and 16 deletions
+22 -4
View File
@@ -5,8 +5,12 @@ inputs:
description: JDK major version
required: false
default: "25"
distribution:
description: Java distribution to use
required: false
default: temurin
architecture:
description: Compatibility input for existing workflow call sites
description: Target architecture (x64 or arm64)
required: false
default: ""
runs:
@@ -16,6 +20,7 @@ runs:
shell: bash
env:
JAVA_VERSION: ${{ inputs.java-version }}
JAVA_DISTRIBUTION: ${{ inputs.distribution }}
JAVA_ARCHITECTURE: ${{ inputs.architecture }}
RUNNER_ARCHITECTURE: ${{ runner.arch }}
RUNNER_OS_NAME: ${{ runner.os }}
@@ -26,6 +31,15 @@ runs:
exit 1
fi
distribution="$(printf '%s' "${JAVA_DISTRIBUTION}" | tr '[:upper:]' '[:lower:]')"
case "${distribution}" in
temurin|microsoft) ;;
*)
echo "Unsupported Java distribution: ${JAVA_DISTRIBUTION}. Supported: temurin, microsoft" >&2
exit 1
;;
esac
architecture="${JAVA_ARCHITECTURE}"
if [ -z "${architecture}" ]; then
architecture="${RUNNER_ARCHITECTURE}"
@@ -54,7 +68,7 @@ runs:
java_home="${JAVA_HOME}"
fi
fi
if [ -z "${java_home}" ] && [ "${RUNNER_OS_NAME}" = "macOS" ] && [ "${architecture}" = "X64" ]; then
if [ -z "${java_home}" ] && [ "${RUNNER_OS_NAME}" = "macOS" ] && [ "${architecture}" = "X64" ] && [ "${distribution}" = "temurin" ]; then
java_home="$(arch -x86_64 /usr/libexec/java_home -v "${JAVA_VERSION}" 2>/dev/null || true)"
fi
if [ -n "${java_home}" ] && [ "${RUNNER_OS_NAME}" = "macOS" ]; then
@@ -65,7 +79,7 @@ runs:
java_home=""
fi
fi
if [ -z "${java_home}" ] && [ "${RUNNER_OS_NAME}" = "macOS" ] && [ "${architecture}" = "X64" ]; then
if [ -z "${java_home}" ] && [ "${RUNNER_OS_NAME}" = "macOS" ] && [ "${architecture}" = "X64" ] && [ "${distribution}" = "temurin" ]; then
jdk_version="25.0.3+9"
jdk_archive="OpenJDK25U-jdk_x64_mac_hotspot_25.0.3_9.tar.gz"
jdk_sha256="4c539a18b4d656960ff6766727e9ca546fc17f7a29714dba9e7b47bdcb37c447"
@@ -85,7 +99,7 @@ runs:
java_home="$(find "${jdk_root}" -type d -path '*/Contents/Home' -print -quit)"
fi
if [ -z "${java_home}" ]; then
echo "JDK 25 is not installed on this runner (${java_home_variable} is missing)" >&2
echo "JDK ${JAVA_VERSION} (${distribution}, ${architecture}) is not installed on this runner (${java_home_variable} is missing)" >&2
exit 1
fi
@@ -100,4 +114,8 @@ runs:
echo "JAVA_HOME=${java_home}" >> "${GITHUB_ENV}"
echo "${java_home}/bin" >> "${GITHUB_PATH}"
java -version 2>&1 | tee "${RUNNER_TEMP}/java-version.txt"
case "${distribution}" in
temurin) grep -Eiq "Temurin|Eclipse Adoptium" "${RUNNER_TEMP}/java-version.txt" ;;
microsoft) grep -Eiq "Microsoft" "${RUNNER_TEMP}/java-version.txt" ;;
esac
grep -Eq "version \"${JAVA_VERSION}(\.|\")" "${RUNNER_TEMP}/java-version.txt"
+13 -12
View File
@@ -62,12 +62,13 @@ jobs:
filters: .github/config/.files.yaml
gradle-cache-prime:
if: needs.files-changed.outputs.backend == 'true'
needs: [files-changed]
uses: ./.github/workflows/gradle-cache-prime.yml
secrets: inherit
build:
if: needs.files-changed.outputs.backend == 'true'
if: needs.files-changed.outputs.backend == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
actions: read
@@ -82,7 +83,7 @@ jobs:
# releases (v2.0.0 / v2.5.0 / v2.10.0) and verifies admin login still
# works after Hibernate's ddl-auto=update migrates the schema. Gated on
# the `project` filter so doc-only PRs skip this ~5-minute job.
if: needs.files-changed.outputs.project == 'true'
if: needs.files-changed.outputs.project == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
contents: read
@@ -90,7 +91,7 @@ jobs:
secrets: inherit
check-generateOpenApiDocs:
if: needs.files-changed.outputs.openapi == 'true'
if: needs.files-changed.outputs.openapi == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
contents: read
@@ -98,7 +99,7 @@ jobs:
secrets: inherit
frontend-validation:
if: needs.files-changed.outputs.frontend == 'true'
if: needs.files-changed.outputs.frontend == 'true' && false
needs: [files-changed]
permissions:
contents: read
@@ -111,7 +112,7 @@ jobs:
# whole-suite sweep (nightly.yml) still covers stories a change affects without
# touching them directly.
frontend-a11y:
if: needs.files-changed.outputs.frontend == 'true'
if: needs.files-changed.outputs.frontend == 'true' && false
needs: [files-changed]
permissions:
contents: read
@@ -119,7 +120,7 @@ jobs:
secrets: inherit
playwright-e2e:
if: needs.files-changed.outputs.frontend == 'true'
if: needs.files-changed.outputs.frontend == 'true' && false
needs: [files-changed]
permissions:
contents: read
@@ -127,7 +128,7 @@ jobs:
secrets: inherit
playwright-e2e-live:
if: needs.files-changed.outputs.frontend == 'true'
if: needs.files-changed.outputs.frontend == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
contents: read
@@ -135,7 +136,7 @@ jobs:
secrets: inherit
playwright-e2e-enterprise:
if: needs.files-changed.outputs.proprietary == 'true'
if: needs.files-changed.outputs.proprietary == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
contents: read
@@ -145,7 +146,7 @@ jobs:
use_shared_cache: true
check-licence:
if: needs.files-changed.outputs.build == 'true'
if: needs.files-changed.outputs.build == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
contents: read
@@ -153,7 +154,7 @@ jobs:
secrets: inherit
docker-compose-tests:
if: needs.files-changed.outputs.project == 'true'
if: needs.files-changed.outputs.project == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
actions: write
@@ -209,7 +210,7 @@ jobs:
use_shared_cache: true
ai-engine:
if: needs.files-changed.outputs.engine == 'true'
if: needs.files-changed.outputs.engine == 'true' && false
needs: [files-changed]
permissions:
contents: read
@@ -223,7 +224,7 @@ jobs:
# generators, generated files, generation tasks) rather than the broad
# frontend filter, so a CSS-only PR does not pay for a backend build.
generated-models:
if: needs.files-changed.outputs.generated-models == 'true'
if: needs.files-changed.outputs.generated-models == 'true' && false
needs: [files-changed, gradle-cache-prime]
permissions:
contents: read
+1
View File
@@ -262,6 +262,7 @@ jobs:
uses: ./.github/actions/java
with:
java-version: "25"
distribution: ${{ matrix.platform == 'windows-11-arm' && 'microsoft' || 'temurin' }}
- name: Install Task
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0
+1
View File
@@ -208,6 +208,7 @@ jobs:
uses: ./.github/actions/java
with:
java-version: "25"
distribution: ${{ matrix.platform == 'windows-11-arm' && 'microsoft' || 'temurin' }}
- name: Setup Task
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0