From d1a55d3a40a624d94d7fb5f71784678c729648bd Mon Sep 17 00:00:00 2001 From: Ludy87 Date: Mon, 24 Aug 2026 22:34:02 +0200 Subject: [PATCH] Add local Java action and update workflows Introduce a composite action (.github/actions/java/action.yml) that configures the runner's preinstalled JDK 25 (validates version/architecture, sets JAVA_HOME and PATH). Replace pinned actions/setup-java references with the new local action across CI workflows so jobs use the repository-provided JDK setup. Small comment wording tweak in multiOSReleases. No functional change beyond switching to the local JDK setup action. --- .github/actions/java/action.yml | 48 +++++++++++++++++++ .../workflows/PR-Demo-Comment-with-react.yml | 3 +- .github/workflows/backend-build.yml | 3 +- .github/workflows/build-enterprise.yml | 3 +- .github/workflows/check-generated-models.yml | 3 +- .github/workflows/check-licence.yml | 3 +- .github/workflows/check-openapi.yml | 3 +- .github/workflows/coverage-aggregate.yml | 3 +- .github/workflows/db-migration-test.yml | 3 +- .github/workflows/docker-compose-tests.yml | 3 +- .github/workflows/e2e-live.yml | 3 +- .../frontend-backend-licenses-update.yml | 7 ++- .github/workflows/gradle-cache-prime.yml | 3 +- .github/workflows/multiOSReleases.yml | 14 ++---- .github/workflows/nightly.yml | 3 +- .github/workflows/push-docker.yml | 3 +- .github/workflows/swagger.yml | 3 +- .github/workflows/tauri-build.yml | 6 +-- .github/workflows/test-build-docker.yml | 3 +- .github/workflows/update-gradle.yml | 3 +- 20 files changed, 74 insertions(+), 49 deletions(-) create mode 100644 .github/actions/java/action.yml diff --git a/.github/actions/java/action.yml b/.github/actions/java/action.yml new file mode 100644 index 0000000000..2890c2d8c8 --- /dev/null +++ b/.github/actions/java/action.yml @@ -0,0 +1,48 @@ +name: Local Java +description: Configure the JDK already installed on the GitHub Actions runner +inputs: + java-version: + description: JDK major version + required: false + default: "25" + architecture: + description: Compatibility input for existing workflow call sites + required: false + default: "" +runs: + using: composite + steps: + - name: Configure preinstalled JDK + shell: bash + env: + JAVA_VERSION: ${{ inputs.java-version }} + JAVA_ARCHITECTURE: ${{ inputs.architecture }} + RUNNER_ARCHITECTURE: ${{ runner.arch }} + run: | + set -euo pipefail + if [ "${JAVA_VERSION}" != "25" ]; then + echo "This repository requires JDK 25; received ${JAVA_VERSION}" >&2 + exit 1 + fi + + architecture="${JAVA_ARCHITECTURE}" + if [ -z "${architecture}" ]; then + architecture="${RUNNER_ARCHITECTURE}" + fi + case "${architecture^^}" in + X64|AMD64|X86_64) architecture=X64 ;; + ARM64|AARCH64) architecture=ARM64 ;; + *) echo "Unsupported runner architecture: ${architecture}" >&2; exit 1 ;; + esac + + java_home_variable="JAVA_HOME_${JAVA_VERSION}_${architecture}" + java_home="${!java_home_variable:-}" + if [ -z "${java_home}" ]; then + echo "JDK 25 is not installed on this runner (${java_home_variable} is missing)" >&2 + exit 1 + fi + + echo "JAVA_HOME=${java_home}" >> "${GITHUB_ENV}" + echo "${java_home}/bin" >> "${GITHUB_PATH}" + java -version 2>&1 | tee "${RUNNER_TEMP}/java-version.txt" + grep -Eq "version \"${JAVA_VERSION}(\.|\")" "${RUNNER_TEMP}/java-version.txt" diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml index 111dba441f..8f9284b1b0 100644 --- a/.github/workflows/PR-Demo-Comment-with-react.yml +++ b/.github/workflows/PR-Demo-Comment-with-react.yml @@ -200,10 +200,9 @@ jobs: key: gradle-deploy-pr-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 diff --git a/.github/workflows/backend-build.yml b/.github/workflows/backend-build.yml index 09c6bbc9a8..82f63e4f30 100644 --- a/.github/workflows/backend-build.yml +++ b/.github/workflows/backend-build.yml @@ -46,10 +46,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-${{ matrix.jdk-version }}-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK ${{ matrix.jdk-version }} - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: ${{ matrix.jdk-version }} - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 diff --git a/.github/workflows/build-enterprise.yml b/.github/workflows/build-enterprise.yml index a5a346db88..405319991e 100644 --- a/.github/workflows/build-enterprise.yml +++ b/.github/workflows/build-enterprise.yml @@ -83,10 +83,9 @@ jobs: key: gradle-playwright-e2e-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Set up Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 diff --git a/.github/workflows/check-generated-models.yml b/.github/workflows/check-generated-models.yml index 476f9d21a7..1df79c2581 100644 --- a/.github/workflows/check-generated-models.yml +++ b/.github/workflows/check-generated-models.yml @@ -63,10 +63,9 @@ jobs: key: gradle-generated-models-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Set up Node uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 diff --git a/.github/workflows/check-licence.yml b/.github/workflows/check-licence.yml index 7626122884..755edcbf15 100644 --- a/.github/workflows/check-licence.yml +++ b/.github/workflows/check-licence.yml @@ -32,10 +32,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 diff --git a/.github/workflows/check-openapi.yml b/.github/workflows/check-openapi.yml index 47341834a3..2e17f32419 100644 --- a/.github/workflows/check-openapi.yml +++ b/.github/workflows/check-openapi.yml @@ -33,10 +33,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 diff --git a/.github/workflows/coverage-aggregate.yml b/.github/workflows/coverage-aggregate.yml index 899bed7f9d..a2c35ef137 100644 --- a/.github/workflows/coverage-aggregate.yml +++ b/.github/workflows/coverage-aggregate.yml @@ -49,10 +49,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install uv uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 diff --git a/.github/workflows/db-migration-test.yml b/.github/workflows/db-migration-test.yml index 3841ea4410..9a49e39eab 100644 --- a/.github/workflows/db-migration-test.yml +++ b/.github/workflows/db-migration-test.yml @@ -36,10 +36,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: 25 - distribution: temurin # Keep the normal formatting path here so this smoke test exercises the # same Gradle configuration as the backend build. diff --git a/.github/workflows/docker-compose-tests.yml b/.github/workflows/docker-compose-tests.yml index cf5887a205..1341afd0e3 100644 --- a/.github/workflows/docker-compose-tests.yml +++ b/.github/workflows/docker-compose-tests.yml @@ -44,10 +44,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" # When the PR changes the base image, test.sh builds it locally # (stirling-pdf-base:local) into the daemon image store. A buildx diff --git a/.github/workflows/e2e-live.yml b/.github/workflows/e2e-live.yml index b04f5022cc..d76d9c3153 100644 --- a/.github/workflows/e2e-live.yml +++ b/.github/workflows/e2e-live.yml @@ -33,10 +33,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Set up Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 diff --git a/.github/workflows/frontend-backend-licenses-update.yml b/.github/workflows/frontend-backend-licenses-update.yml index 96e0edd8ac..746e9e43dc 100644 --- a/.github/workflows/frontend-backend-licenses-update.yml +++ b/.github/workflows/frontend-backend-licenses-update.yml @@ -166,7 +166,7 @@ jobs: }); // Filter for license check comments - const licenseComments = comments.filter(comment => + const licenseComments = comments.filter(comment => comment.body.includes('## ✅ Frontend License Check Passed') || comment.body.includes('## ❌ Frontend License Check Failed') ); @@ -361,10 +361,9 @@ jobs: key: gradle-license-report-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 @@ -418,7 +417,7 @@ jobs: per_page: 100 }); - const backendLicenseComments = comments.filter(comment => + const backendLicenseComments = comments.filter(comment => comment.body.includes('## ✅ Backend License Check Passed') || comment.body.includes('## ❌ Backend License Check Failed') ); diff --git a/.github/workflows/gradle-cache-prime.yml b/.github/workflows/gradle-cache-prime.yml index 1c79ee4d12..da88ff0db3 100644 --- a/.github/workflows/gradle-cache-prime.yml +++ b/.github/workflows/gradle-cache-prime.yml @@ -42,10 +42,9 @@ jobs: - name: Set up JDK 25 if: steps.cache-gradle-restore.outputs.cache-hit != 'true' - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Resolve backend dependencies if: steps.cache-gradle-restore.outputs.cache-hit != 'true' diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml index 9071997ad7..4c3c370776 100644 --- a/.github/workflows/multiOSReleases.yml +++ b/.github/workflows/multiOSReleases.yml @@ -63,10 +63,9 @@ jobs: key: gradle-tauri-releases-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 @@ -155,10 +154,9 @@ jobs: key: gradle-tauri-releases-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Setup Node.js if: matrix.variant.build_frontend == true @@ -247,13 +245,12 @@ jobs: # x86_64 JDK is set up first so the aarch64 step below can leave its # JAVA_HOME as the active one. The macOS universal JRE build needs # jmods from both arches; the x64 path is captured into the env - # before the second setup-java overwrites JAVA_HOME. + # before the second local JDK setup overwrites JAVA_HOME. - name: Set up x86_64 JDK 25 (macOS universal JRE) if: matrix.platform == 'macos-15' - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" architecture: "x64" - name: Capture x86_64 JAVA_HOME @@ -262,10 +259,9 @@ jobs: # Temurin has no windows-aarch64 JDK 25 yet; Microsoft OpenJDK does. - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + 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 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 5daa60f56f..d58411ec54 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -148,10 +148,9 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install uv uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index 844a77b489..05bf05ad43 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -78,10 +78,9 @@ jobs: key: gradle-push-docker-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Set up Docker Buildx id: buildx diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index 1f53edd17b..ccca1be2d9 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -45,10 +45,9 @@ jobs: key: gradle-swagger-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Generate Swagger documentation run: ./gradlew :stirling-pdf:generateOpenApiDocs diff --git a/.github/workflows/tauri-build.yml b/.github/workflows/tauri-build.yml index 3b7a0b04fa..0f2feb30fa 100644 --- a/.github/workflows/tauri-build.yml +++ b/.github/workflows/tauri-build.yml @@ -194,10 +194,9 @@ jobs: - name: Set up x86_64 JDK 25 (macOS universal JRE) if: matrix.platform == 'macos-15' - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" architecture: "x64" - name: Capture x86_64 JAVA_HOME @@ -206,10 +205,9 @@ jobs: # Temurin has no windows-aarch64 JDK 25 yet; Microsoft OpenJDK does. - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + 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 diff --git a/.github/workflows/test-build-docker.yml b/.github/workflows/test-build-docker.yml index 4717c9c387..3e10188cae 100644 --- a/.github/workflows/test-build-docker.yml +++ b/.github/workflows/test-build-docker.yml @@ -121,10 +121,9 @@ jobs: key: gradle-v1-${{ runner.os }}-${{ runner.arch }}-jdk-25-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml', 'buildSrc/**', 'settings.gradle', 'build.gradle', 'app/**/build.gradle', 'gradle/**/*.gradle') }} - name: Set up JDK 25 - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: java-version: "25" - distribution: "temurin" - name: Install Task uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0 diff --git a/.github/workflows/update-gradle.yml b/.github/workflows/update-gradle.yml index 07474f112b..0649ed2916 100644 --- a/.github/workflows/update-gradle.yml +++ b/.github/workflows/update-gradle.yml @@ -27,9 +27,8 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Java - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: ./.github/actions/java with: - distribution: temurin java-version: "25" - name: Find latest Gradle release