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

Reply via email to