This is an automated email from the ASF dual-hosted git repository.
diqiu50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new 3fccbb9420 [#10862] improvement(ci): Pre-install JDK 24 to stabilize
Trino connector build (#10863)
3fccbb9420 is described below
commit 3fccbb9420610bc454c2f73c3225d9ff1b6f889f
Author: Yuhui <[email protected]>
AuthorDate: Mon Apr 27 10:54:17 2026 +0800
[#10862] improvement(ci): Pre-install JDK 24 to stabilize Trino connector
build (#10863)
### What changes were proposed in this pull request?
- Add reusable composite action `.github/actions/setup-java-toolchains`
that pre-installs JDK 24 alongside JDK 17 and registers JDK 24 with
Gradle toolchain via `~/.gradle/gradle.properties`, eliminating
unreliable Foojay downloads at build time.
- Apply the composite action to 5 workflows that build Trino connector
modules: `build.yml`, `trino-integration-test.yml`,
`trino-multi-version-test.yml`, `frontend-integration-test.yml`,
`cron-integration-test.yml`.
- Add `skipTrinoConnector` property to `settings.gradle.kts` to
conditionally exclude all Trino subprojects from the Gradle project
graph. Use it in `gvfs-fuse-build-test.yml` which has no Trino
dependency.
### Why are the changes needed?
Fix: #10862
Trino connector submodules require Java 24 via Gradle toolchain. When
only JDK 17 is installed in CI, Gradle auto-downloads JDK 24 via the
Foojay resolver plugin, which is unreliable and causes flaky CI
failures.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
CI workflows validation.
---
.github/actions/setup-java-toolchains/action.yml | 37 ++++++++++++++++++++++++
.github/workflows/build.yml | 8 ++---
.github/workflows/cron-integration-test.yml | 5 +---
.github/workflows/frontend-integration-test.yml | 4 +--
.github/workflows/gvfs-fuse-build-test.yml | 4 +--
.github/workflows/trino-integration-test.yml | 4 +--
.github/workflows/trino-multi-version-test.yml | 6 +---
docs/how-to-build.md | 6 ++++
settings.gradle.kts | 26 ++++++++++-------
9 files changed, 67 insertions(+), 33 deletions(-)
diff --git a/.github/actions/setup-java-toolchains/action.yml
b/.github/actions/setup-java-toolchains/action.yml
new file mode 100644
index 0000000000..460fe105d6
--- /dev/null
+++ b/.github/actions/setup-java-toolchains/action.yml
@@ -0,0 +1,37 @@
+name: 'Setup Java Toolchains'
+description: 'Install a primary JDK and JDK 24 (for Trino), register JDK 24
with Gradle toolchain'
+
+inputs:
+ java-version:
+ description: 'Primary Java version'
+ default: '17'
+ cache:
+ description: 'Gradle cache setting'
+ default: 'gradle'
+
+runs:
+ using: composite
+ steps:
+ - uses: actions/setup-java@v4
+ id: setup-jdk24
+ with:
+ java-version: 24
+ distribution: temurin
+
+ - uses: actions/setup-java@v4
+ with:
+ java-version: ${{ inputs.java-version }}
+ distribution: temurin
+ cache: ${{ inputs.cache }}
+
+ - name: Register JDK 24 with Gradle toolchain
+ shell: bash
+ run: |
+ mkdir -p ~/.gradle
+ GRADLE_PROPERTIES=~/.gradle/gradle.properties
+ TMP=$(mktemp)
+ if [ -f "${GRADLE_PROPERTIES}" ]; then
+ awk '!/^org\.gradle\.java\.installations\.paths=/'
"${GRADLE_PROPERTIES}" > "${TMP}"
+ fi
+ echo "org.gradle.java.installations.paths=${{
steps.setup-jdk24.outputs.path }}" >> "${TMP}"
+ mv "${TMP}" "${GRADLE_PROPERTIES}"
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index dc43ecb48b..259d666600 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -102,11 +102,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: ./.github/actions/setup-java-toolchains
with:
java-version: 17
- distribution: 'temurin'
- cache: 'gradle'
- name: Build with Gradle
run: |
@@ -160,11 +158,9 @@ jobs:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can
access it
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: ./.github/actions/setup-java-toolchains
with:
java-version: ${{ matrix.java-version }}
- distribution: 'temurin'
- cache: 'gradle'
- name: Test publish to local
run: ./gradlew publishToMavenLocal -PskipWeb=true -x test
diff --git a/.github/workflows/cron-integration-test.yml
b/.github/workflows/cron-integration-test.yml
index 71cb552fe9..8bf1bc484d 100644
--- a/.github/workflows/cron-integration-test.yml
+++ b/.github/workflows/cron-integration-test.yml
@@ -63,12 +63,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: ./.github/actions/setup-java-toolchains
with:
java-version: ${{ matrix.java-version }}
- distribution: 'temurin'
- cache: 'gradle'
-
- name: Set up QEMU
uses:
docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
diff --git a/.github/workflows/frontend-integration-test.yml
b/.github/workflows/frontend-integration-test.yml
index 072c481bc9..7cfc55c69f 100644
--- a/.github/workflows/frontend-integration-test.yml
+++ b/.github/workflows/frontend-integration-test.yml
@@ -68,11 +68,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: ./.github/actions/setup-java-toolchains
with:
java-version: ${{ matrix.java-version }}
- distribution: 'temurin'
- cache: 'gradle'
- name: Set up QEMU
uses:
docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
diff --git a/.github/workflows/gvfs-fuse-build-test.yml
b/.github/workflows/gvfs-fuse-build-test.yml
index dc80cbf7bc..73bdbfb2f5 100644
--- a/.github/workflows/gvfs-fuse-build-test.yml
+++ b/.github/workflows/gvfs-fuse-build-test.yml
@@ -78,8 +78,8 @@ jobs:
- name: Integration test
run: |
- ./gradlew build -PskipWeb=true -x :clients:client-python:build -x
test -x web
- ./gradlew compileDistribution -PskipWeb=true -x
:clients:client-python:build -x test -x web
+ ./gradlew build -PskipWeb=true -x :clients:client-python:build -x
test -x web -PskipTrinoConnector=true
+ ./gradlew compileDistribution -PskipWeb=true -x
:clients:client-python:build -x test -x web -PskipTrinoConnector=true
cd clients/filesystem-fuse
make test-s3
make test-fuse-it
diff --git a/.github/workflows/trino-integration-test.yml
b/.github/workflows/trino-integration-test.yml
index 705c231f64..f7964fb03f 100644
--- a/.github/workflows/trino-integration-test.yml
+++ b/.github/workflows/trino-integration-test.yml
@@ -61,11 +61,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: ./.github/actions/setup-java-toolchains
with:
java-version: ${{ matrix.java-version }}
- distribution: 'temurin'
- cache: 'gradle'
- name: Set up QEMU
uses:
docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
diff --git a/.github/workflows/trino-multi-version-test.yml
b/.github/workflows/trino-multi-version-test.yml
index e6e6074994..97910e1044 100644
--- a/.github/workflows/trino-multi-version-test.yml
+++ b/.github/workflows/trino-multi-version-test.yml
@@ -12,11 +12,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
- with:
- java-version: 17
- distribution: 'temurin'
- cache: 'gradle'
+ - uses: ./.github/actions/setup-java-toolchains
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
diff --git a/docs/how-to-build.md b/docs/how-to-build.md
index 3314eb1bb7..a675c1f0ff 100644
--- a/docs/how-to-build.md
+++ b/docs/how-to-build.md
@@ -65,6 +65,12 @@ license: "This software is licensed under the Apache License
version 2."
./gradlew build -PpythonVersion=3.12
```
+ If you don't need to build the Trino connector (for example, when building
on a machine without JDK 24), you can skip it with:
+
+ ```shell
+ ./gradlew build -PskipTrinoConnector=true
+ ```
+
If you want to build a module on its own, like the Spark connector, you can
use Gradle to build a module with a specific name, like so:
```shell
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 8490f34b8f..c7a806eafd 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -69,16 +69,22 @@ include("iceberg:iceberg-rest-server")
include("lance:lance-common")
include("lance:lance-rest-server")
include("authorizations:authorization-ranger",
"authorizations:authorization-common", "authorizations:authorization-chain")
-include(
- "trino-connector:trino-connector",
- "trino-connector:trino-connector-435-439",
- "trino-connector:trino-connector-440-445",
- "trino-connector:trino-connector-446-451",
- "trino-connector:trino-connector-452-468",
- "trino-connector:trino-connector-469-472",
- "trino-connector:trino-connector-473-478",
- "trino-connector:integration-test"
-)
+val skipTrinoConnector: Boolean =
+ gradle.startParameter.projectProperties["skipTrinoConnector"]?.toBoolean()
?: false
+if (!skipTrinoConnector) {
+ include(
+ "trino-connector:trino-connector",
+ "trino-connector:trino-connector-435-439",
+ "trino-connector:trino-connector-440-445",
+ "trino-connector:trino-connector-446-451",
+ "trino-connector:trino-connector-452-468",
+ "trino-connector:trino-connector-469-472",
+ "trino-connector:trino-connector-473-478",
+ "trino-connector:integration-test"
+ )
+} else {
+ println("Skipping trino-connector modules since skipTrinoConnector is set to
true")
+}
include("spark-connector:spark-common")
if (scalaVersion == "2.12") {
// flink only support scala 2.12