This is an automated email from the ASF dual-hosted git repository.

yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/master by this push:
     new b8cab719b205 fix(ci): make required status checks work for PRs (#18598)
b8cab719b205 is described below

commit b8cab719b2050c253f1d1c6d206fcde87c02f317
Author: Y Ethan Guo <[email protected]>
AuthorDate: Tue May 26 14:47:52 2026 -0700

    fix(ci): make required status checks work for PRs (#18598)
---
 .asf.yaml                 |  19 +++
 .github/workflows/bot.yml | 293 ++++++++++++++++++++++++++++++++++++----------
 2 files changed, 247 insertions(+), 65 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
index c6404e63204b..5ba24ff6b728 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -34,6 +34,8 @@ github:
     issues: true
     projects: true
     discussions: true
+  pull_requests:
+    allow_auto_merge: true
   enabled_merge_buttons:
     squash:  true
     merge:   false
@@ -49,6 +51,10 @@ github:
           - validate-pr
           - validate-pr-title
           - test-hudi-trino-plugin
+          - test-spark-client-and-hadoop-common (scala-2.12, spark3.5, 
flink2.1)
+          - test-utilities (scala-2.12, spark3.5, flink2.1)
+          - test-common-and-other-modules (scala-2.12, spark3.5, flink2.1)
+          - test-hudi-hadoop-mr-and-hudi-java-client (scala-2.12, spark3.5, 
flink2.1)
           - test-spark-java-tests-part1 (scala-2.12, spark3.4, 
hudi-spark-datasource/hudi-spark3.4.x)
           - test-spark-java-tests-part1 (scala-2.12, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java-tests-part2 (scala-2.12, spark3.4, 
hudi-spark-datasource/hudi-spark3.4.x)
@@ -61,29 +67,42 @@ github:
           - test-spark-scala-other-tests (scala-2.12, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java17-java-tests-part1 (scala-2.13, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java17-java-tests-part1 (scala-2.13, spark4.0, 
hudi-spark-datasource/hudi-spark4.0.x)
+          - test-spark-java17-java-tests-part1 (scala-2.13, spark4.1, 
hudi-spark-datasource/hudi-spark4.1.x)
           - test-spark-java17-java-tests-part2 (scala-2.13, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java17-java-tests-part2 (scala-2.13, spark4.0, 
hudi-spark-datasource/hudi-spark4.0.x)
+          - test-spark-java17-java-tests-part2 (scala-2.13, spark4.1, 
hudi-spark-datasource/hudi-spark4.1.x)
           - test-spark-java17-java-tests-part3 (scala-2.13, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java17-java-tests-part3 (scala-2.13, spark4.0, 
hudi-spark-datasource/hudi-spark4.0.x)
+          - test-spark-java17-java-tests-part3 (scala-2.13, spark4.1, 
hudi-spark-datasource/hudi-spark4.1.x)
           - test-spark-java17-scala-dml-tests (scala-2.13, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java17-scala-dml-tests (scala-2.13, spark4.0, 
hudi-spark-datasource/hudi-spark4.0.x)
+          - test-spark-java17-scala-dml-tests (scala-2.13, spark4.1, 
hudi-spark-datasource/hudi-spark4.1.x)
           - test-spark-java17-scala-other-tests (scala-2.13, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
           - test-spark-java17-scala-other-tests (scala-2.13, spark4.0, 
hudi-spark-datasource/hudi-spark4.0.x)
+          - test-spark-java17-scala-other-tests (scala-2.13, spark4.1, 
hudi-spark-datasource/hudi-spark4.1.x)
           - test-flink-1 (flink1.17, 1.11.4, 1.12.3)
           - test-flink-1 (flink1.18, 1.11.4, 1.13.1)
           - test-flink-1 (flink1.19, 1.11.4, 1.13.1)
           - test-flink-1 (flink1.20, 1.11.4, 1.13.1)
           - test-flink-1 (flink2.0, 1.11.4, 1.14.4)
           - test-flink-1 (flink2.1, 1.11.4, 1.15.2)
+          - test-flink-2 (flink2.1, 1.11.4, 1.15.2)
           - build-spark-java17 (scala-2.12, spark3.4, 
hudi-spark-datasource/hudi-spark3.4.x)
           - build-spark-java17 (scala-2.12, spark3.5, 
hudi-spark-datasource/hudi-spark3.5.x)
+          - build-flink-java17 (scala-2.12, flink2.1, 1.11.4, 1.15.2)
           - validate-bundles (scala-2.12, flink1.17, 1.11.4, 1.12.3, spark3.5, 
spark3.5.1)
           - validate-bundles (scala-2.12, flink1.18, 1.11.4, 1.13.1, spark3.4, 
spark3.4.3)
           - validate-bundles (scala-2.13, flink1.19, 1.11.4, 1.13.1, spark3.5, 
spark3.5.1)
           - validate-bundles (scala-2.13, flink1.20, 1.11.4, 1.13.1, spark3.5, 
spark3.5.1)
           - validate-bundle-spark4 (scala-2.13, flink1.20, 1.11.4, 1.13.1, 
spark4.0, spark4.0.0)
+          - validate-bundle-spark4 (scala-2.13, flink1.20, 1.11.4, 1.13.1, 
spark4.1, spark4.1.1)
           - validate-bundles-java11 (scala-2.12, flink2.0, 1.11.4, 1.14.4, 
spark3.5, spark3.5.1)
           - validate-bundles-java11 (scala-2.12, flink2.1, 1.11.4, 1.15.2, 
spark3.5, spark3.5.1)
+          - docker-java17-test (scala-2.12, flink2.1, spark3.5, spark3.5.0)
+          - docker-java17-test (scala-2.13, flink2.1, spark3.5, spark3.5.0)
+          - docker-java17-test (scala-2.13, flink2.1, spark4.0, spark4.0.0)
+          - docker-java17-test (scala-2.13, flink2.1, spark4.1, spark4.1.1)
+          - integration-tests (spark3.5, flink2.1, 
spark-3.5.3/spark-3.5.3-bin-hadoop3.tgz)
   collaborators:
     - ad1happy2go
     - rangareddy
diff --git a/.github/workflows/bot.yml b/.github/workflows/bot.yml
index ed57cd7b328a..0f4950993773 100644
--- a/.github/workflows/bot.yml
+++ b/.github/workflows/bot.yml
@@ -7,17 +7,6 @@ on:
       - 'release-*'
       - branch-0.x
   pull_request:
-    paths-ignore:
-      - '**.bmp'
-      - '**.gif'
-      - '**.jpg'
-      - '**.jpeg'
-      - '**.md'
-      - '**.pdf'
-      - '**.png'
-      - '**.svg'
-      - '**.yaml'
-      - '.gitignore'
     branches:
       - master
       - 'release-*'
@@ -38,6 +27,40 @@ env:
   FLINK_IT_FILTER2: -Dit.test=!ITTestHoodieDataSource
 
 jobs:
+  changes:
+    runs-on: ubuntu-latest
+    outputs:
+      relevant: ${{ steps.filter.outputs.relevant }}
+    steps:
+      - name: Detect relevant changes
+        id: filter
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          REPO: ${{ github.repository }}
+          EVENT: ${{ github.event_name }}
+          PR_NUMBER: ${{ github.event.pull_request.number }}
+          BEFORE_SHA: ${{ github.event.before }}
+          AFTER_SHA: ${{ github.sha }}
+        run: |
+          set -euo pipefail
+          if [ "$EVENT" = "pull_request" ]; then
+            FILES=$(gh api --paginate "repos/$REPO/pulls/$PR_NUMBER/files" 
--jq '.[].filename')
+          else
+            FILES=$(gh api "repos/$REPO/compare/$BEFORE_SHA...$AFTER_SHA" --jq 
'.files[].filename')
+          fi
+          echo "Changed files:"
+          printf '%s\n' "$FILES"
+          RELEVANT=false
+          while IFS= read -r f; do
+            [ -z "$f" ] && continue
+            case "$f" in
+              
*.bmp|*.gif|*.jpg|*.jpeg|*.md|*.pdf|*.png|*.svg|*.yaml|*.yml|.gitignore) ;;
+              *) RELEVANT=true ;;
+            esac
+          done <<< "$FILES"
+          echo "Relevant: $RELEVANT"
+          echo "relevant=$RELEVANT" >> "$GITHUB_OUTPUT"
+
   validate-source:
     runs-on: ubuntu-latest
     steps:
@@ -61,6 +84,7 @@ jobs:
 
   test-spark-client-and-hadoop-common:
     runs-on: ubuntu-latest
+    needs: changes
     timeout-minutes: 60
     strategy:
       matrix:
@@ -70,8 +94,10 @@ jobs:
             flinkProfile: "flink2.1"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -79,6 +105,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -86,6 +113,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -DskipTests=true -Phudi-platform-service $MVN_ARGS -am -pl 
hudi-client/hudi-spark-client
       - name: UT - hudi-hadoop-common
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -93,6 +121,7 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -pl hudi-hadoop-common $MVN_ARGS -Djacoco.skip=false
       - name: UT - hudi-client/hudi-spark-client
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -100,6 +129,7 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -pl hudi-client/hudi-spark-client $MVN_ARGS 
-Djacoco.skip=false
       - name: FT - hudi-client/hudi-spark-client
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -107,10 +137,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -pl hudi-client/hudi-spark-client $MVN_ARGS 
-Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -120,6 +150,7 @@ jobs:
 
   test-utilities:
     runs-on: ubuntu-latest
+    needs: changes
     timeout-minutes: 60
     strategy:
       matrix:
@@ -129,8 +160,10 @@ jobs:
             flinkProfile: "flink2.1"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -138,6 +171,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -145,6 +179,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -DskipTests=true -Phudi-platform-service -Pthrift-gen-source 
$MVN_ARGS -am -pl hudi-utilities
       - name: UT - hudi-utilities (TestHoodie*)
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -152,6 +187,7 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -Dtest="TestHoodie*" 
-Dsurefire.failIfNoSpecifiedTests=false -pl hudi-utilities $MVN_ARGS 
-Djacoco.skip=false
       - name: FT - hudi-utilities
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -159,10 +195,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -Dsurefire.failIfNoSpecifiedTests=false -pl 
hudi-utilities $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -172,6 +208,7 @@ jobs:
 
   test-common-and-other-modules:
     runs-on: ubuntu-latest
+    needs: changes
     timeout-minutes: 90
     strategy:
       matrix:
@@ -187,8 +224,10 @@ jobs:
         
!hudi-client/hudi-spark-client,!hudi-cli,!hudi-examples,!hudi-examples/hudi-examples-common,!hudi-examples/hudi-examples-flink,!hudi-examples/hudi-examples-java,!hudi-examples/hudi-examples-spark,!hudi-spark-datasource/hudi-spark,!hudi-utilities
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -196,8 +235,10 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Docker image
+        if: needs.changes.outputs.relevant == 'true'
         run: docker build -t hudi-ci .
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -211,6 +252,7 @@ jobs:
             hudi-ci \
             /bin/bash -c "MAVEN_OPTS='-Xmx8g' mvn clean install -T 2 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -Phudi-platform-service 
-Pthrift-gen-source -DskipTests=true -Dmaven.compiler.maxmem=8192m 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS"
       - name: UT - common and other modules
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -224,6 +266,7 @@ jobs:
             hudi-ci \
             /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn test -Punit-tests 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -fae -pl $UT_MODULES 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS -Djacoco.skip=false"
       - name: UT - hudi-utilities (non-TestHoodie)
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -237,6 +280,7 @@ jobs:
             hudi-ci \
             /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn test -Punit-tests 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -fae -Dtest='!TestHoodie*' 
-Dsurefire.failIfNoSpecifiedTests=false -pl hudi-utilities 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS -Djacoco.skip=false"
       - name: FT - common and other modules
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -250,10 +294,10 @@ jobs:
             hudi-ci \
             /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn test -Pfunctional-tests 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -fae -pl $FT_MODULES 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS -Djacoco.skip=false"
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -263,6 +307,7 @@ jobs:
 
   test-spark-java-tests-part1:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -275,8 +320,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark3.5.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -284,6 +331,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -291,6 +339,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Java UT 1 - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -298,10 +347,10 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests $JAVA_UT_FILTER1 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -311,6 +360,7 @@ jobs:
 
   test-spark-java-tests-part2:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -323,8 +373,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark3.5.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -332,6 +384,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -339,12 +392,14 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Quickstart Test
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" -pl 
hudi-examples/hudi-examples-spark $MVN_ARGS -Djacoco.skip=false
       - name: Java UT 2 - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -352,6 +407,7 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests $JAVA_UT_FILTER2 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Java FTA - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -359,10 +415,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests -Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -372,6 +428,7 @@ jobs:
 
   test-spark-java-tests-part3:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -384,8 +441,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark3.5.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -393,6 +452,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -400,6 +460,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Java FTB - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -407,6 +468,7 @@ jobs:
         run:
           mvn test -Pfunctional-tests-b -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests -Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Java FTC - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -414,10 +476,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests-c -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests -Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -427,6 +489,7 @@ jobs:
 
   test-spark-scala-dml-tests:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -439,8 +502,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark3.5.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -448,6 +513,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -455,6 +521,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Scala UT - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -462,6 +529,7 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-Dtest=skipJavaTests $SCALA_TEST_DML_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Scala FT - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -469,10 +537,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-Dtest=skipJavaTests $SCALA_TEST_DML_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -482,6 +550,7 @@ jobs:
 
   test-spark-scala-other-tests:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -494,8 +563,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark3.5.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -503,6 +574,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -510,6 +582,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Scala UT - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -517,6 +590,7 @@ jobs:
         run:
           mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-Dtest=skipJavaTests $SCALA_TEST_OTHERS_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Scala FT - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -524,10 +598,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-Dtest=skipJavaTests $SCALA_TEST_OTHERS_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -537,6 +611,7 @@ jobs:
 
   test-hudi-hadoop-mr-and-hudi-java-client:
     runs-on: ubuntu-latest
+    needs: changes
     timeout-minutes: 40
     strategy:
       matrix:
@@ -546,8 +621,10 @@ jobs:
             flinkProfile: "flink2.1"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -555,6 +632,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -562,6 +640,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -DskipTests=true -Phudi-platform-service $MVN_ARGS -am -pl 
hudi-hadoop-mr,hudi-client/hudi-java-client
       - name: UT - hudi-hadoop-mr and hudi-client/hudi-java-client
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -569,10 +648,10 @@ jobs:
         run:
           mvn test -Punit-tests -fae -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -pl hudi-hadoop-mr,hudi-client/hudi-java-client $MVN_ARGS 
-Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -582,6 +661,7 @@ jobs:
 
   test-spark-java17-java-tests-part1:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -596,8 +676,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark4.1.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -605,6 +687,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -612,6 +695,7 @@ jobs:
         run:
           mvn clean install -T 2 -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Java UT 1 - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -619,10 +703,10 @@ jobs:
         run:
           mvn test -Punit-tests -Pjava17 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests $JAVA_UT_FILTER1 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -632,6 +716,7 @@ jobs:
 
   test-spark-java17-java-tests-part2:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -646,8 +731,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark4.1.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -655,6 +742,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -662,12 +750,14 @@ jobs:
         run:
           mvn clean install -T 2 -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Quickstart Test
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
         run:
           mvn test -Punit-tests -Pjava17 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests -Dsurefire.failIfNoSpecifiedTests=false -pl 
hudi-examples/hudi-examples-spark $MVN_ARGS -Djacoco.skip=false
       - name: Java UT 2 - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -675,6 +765,7 @@ jobs:
         run:
           mvn test -Punit-tests -Pjava17 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-DwildcardSuites=skipScalaTests $JAVA_UT_FILTER2 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Java FTA - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -682,10 +773,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -pl "$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS 
-Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -695,6 +786,7 @@ jobs:
 
   test-spark-java17-java-tests-part3:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -709,8 +801,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark4.1.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -718,6 +812,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -725,6 +820,7 @@ jobs:
         run:
           mvn clean install -T 2 -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Java FTB - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -732,6 +828,7 @@ jobs:
         run:
           mvn test -Pfunctional-tests-b -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -pl "$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS 
-Djacoco.skip=false
       - name: Java FTC - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -739,10 +836,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests-c -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -pl "$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS 
-Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -752,6 +849,7 @@ jobs:
 
   test-spark-java17-scala-dml-tests:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -766,8 +864,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark4.1.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -775,6 +875,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -782,6 +883,7 @@ jobs:
         run:
           mvn clean install -T 2 -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Scala UT - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -789,6 +891,7 @@ jobs:
         run:
           mvn test -Punit-tests -Pjava17 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-Dtest=skipJavaTests $SCALA_TEST_DML_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Scala FT - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -796,10 +899,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -Dtest=skipJavaTests $SCALA_TEST_DML_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -809,6 +912,7 @@ jobs:
 
   test-spark-java17-scala-other-tests:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -823,8 +927,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark4.1.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -832,6 +938,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -839,6 +946,7 @@ jobs:
         run:
           mvn clean install -T 2 -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Scala UT - Common & Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -846,6 +954,7 @@ jobs:
         run:
           mvn test -Punit-tests -Pjava17 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-Dtest=skipJavaTests $SCALA_TEST_OTHERS_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"hudi-common,$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Scala FT - Spark
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -853,10 +962,10 @@ jobs:
         run:
           mvn test -Pfunctional-tests -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -Dtest=skipJavaTests $SCALA_TEST_OTHERS_FILTER 
-Dsurefire.failIfNoSpecifiedTests=false -pl 
"$SPARK_COMMON_MODULES,$SPARK_MODULES" $MVN_ARGS -Djacoco.skip=false
       - name: Generate merged coverage report
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
       - name: Upload coverage to Codecov
-        if: always()
+        if: always() && needs.changes.outputs.relevant == 'true'
         uses: codecov/codecov-action@v5
         with:
           files: ./jacoco-report.xml
@@ -866,6 +975,7 @@ jobs:
 
   test-flink-1:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -888,8 +998,10 @@ jobs:
             flinkAvroVersion: "1.11.4"
             flinkParquetVersion: '1.15.2'
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -897,6 +1009,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: 'scala-2.12'
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
@@ -905,6 +1018,7 @@ jobs:
         run:
           mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$FLINK_PROFILE" -pl 
hudi-examples/hudi-examples-flink -am -Davro.version="$FLINK_AVRO_VERSION" 
-Dparquet.version="$FLINK_PARQUET_VERSION" -DskipTests=true $MVN_ARGS
       - name: Quickstart Test
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: 'scala-2.12'
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
@@ -918,13 +1032,14 @@ jobs:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           FLINK_AVRO_VERSION: ${{ matrix.flinkAvroVersion }}
           FLINK_PARQUET_VERSION: ${{ matrix.flinkParquetVersion }}
-        if: ${{ endsWith(env.FLINK_PROFILE, '2.1') }}
+        if: ${{ endsWith(env.FLINK_PROFILE, '2.1') && 
needs.changes.outputs.relevant == 'true' }}
         run: |
           mvn clean install -T 2 -Pintegration-tests -D"$SCALA_PROFILE" 
-D"$FLINK_PROFILE" -pl hudi-flink-datasource/hudi-flink -am 
-Davro.version="$FLINK_AVRO_VERSION" -Dparquet.version="$FLINK_PARQUET_VERSION" 
-DskipTests=true $MVN_ARGS
           mvn verify -Pintegration-tests -D"$SCALA_PROFILE" -D"$FLINK_PROFILE" 
-Davro.version="$FLINK_AVRO_VERSION" -Dparquet.version="$FLINK_PARQUET_VERSION" 
$FLINK_IT_FILTER1 -pl hudi-flink-datasource/hudi-flink $MVN_ARGS
 
   test-flink-2:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -932,8 +1047,10 @@ jobs:
             flinkAvroVersion: "1.11.4"
             flinkParquetVersion: '1.15.2'
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -941,6 +1058,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: 'scala-2.12'
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
@@ -954,13 +1072,14 @@ jobs:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           FLINK_AVRO_VERSION: ${{ matrix.flinkAvroVersion }}
           FLINK_PARQUET_VERSION: ${{ matrix.flinkParquetVersion }}
-        if: ${{ endsWith(env.FLINK_PROFILE, '2.1') }}
+        if: ${{ endsWith(env.FLINK_PROFILE, '2.1') && 
needs.changes.outputs.relevant == 'true' }}
         run: |
           mvn clean install -T 2 -Pintegration-tests -D"$SCALA_PROFILE" 
-D"$FLINK_PROFILE" -pl hudi-flink-datasource/hudi-flink -am 
-Davro.version="$FLINK_AVRO_VERSION" -Dparquet.version="$FLINK_PARQUET_VERSION" 
-DskipTests=true $MVN_ARGS
           mvn verify -Pintegration-tests -D"$SCALA_PROFILE" -D"$FLINK_PROFILE" 
-Davro.version="$FLINK_AVRO_VERSION" -Dparquet.version="$FLINK_PARQUET_VERSION" 
$FLINK_IT_FILTER2 -pl hudi-flink-datasource/hudi-flink $MVN_ARGS
 
   docker-java17-test:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -982,8 +1101,10 @@ jobs:
             sparkRuntime: 'spark4.1.1'
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -996,13 +1117,15 @@ jobs:
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
           SPARK_RUNTIME: ${{ matrix.sparkRuntime }}
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
-        if: ${{ env.SPARK_PROFILE >= 'spark3.4' }} # Only support Spark 3.4 
for now
+        # Only support Spark 3.4 for now
+        if: ${{ env.SPARK_PROFILE >= 'spark3.4' && 
needs.changes.outputs.relevant == 'true' }}
         run: |
           HUDI_VERSION=$(mvn help:evaluate -Dexpression=project.version -q 
-DforceStdout)
           ./packaging/bundle-validation/run_docker_java17.sh
 
   validate-bundles:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -1032,8 +1155,10 @@ jobs:
             sparkRuntime: 'spark3.5.1'
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -1041,6 +1166,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1057,6 +1183,7 @@ jobs:
             mvn package -T 2 -D"$SCALA_PROFILE" -D"$FLINK_PROFILE" 
-DdeployArtifacts=true -DskipTests=true $MVN_ARGS -pl 
packaging/hudi-flink-bundle -am -Davro.version="$FLINK_AVRO_VERSION" 
-Dparquet.version="$FLINK_PARQUET_VERSION"
           fi
       - name: IT - Bundle Validation - OpenJDK 11
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1066,6 +1193,7 @@ jobs:
           HUDI_VERSION=$(mvn help:evaluate -Dexpression=project.version -q 
-DforceStdout)
           ./packaging/bundle-validation/ci_run.sh hudi_docker_java11 
$HUDI_VERSION openjdk11
       - name: IT - Bundle Validation - OpenJDK 17
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1077,6 +1205,7 @@ jobs:
 
   validate-bundle-spark4:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -1093,14 +1222,17 @@ jobs:
             sparkProfile: 'spark4.1'
             sparkRuntime: 'spark4.1.1'
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
           distribution: 'temurin'
           architecture: x64
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1110,6 +1242,7 @@ jobs:
         run: |
           mvn clean package -T 2 -Pjava17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DdeployArtifacts=true -DskipTests=true 
-Dmaven.javadoc.skip=true $MVN_ARGS -pl 
packaging/hudi-hadoop-mr-bundle,packaging/hudi-spark-bundle,packaging/hudi-utilities-bundle,packaging/hudi-utilities-slim-bundle,packaging/hudi-cli-bundle
 -am
       - name: IT - Spark4 Bundle Validation - OpenJDK 17
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1122,6 +1255,7 @@ jobs:
   # flink 2.0/2.1 only support Java 11 and above version
   validate-bundles-java11:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -1139,8 +1273,10 @@ jobs:
             sparkRuntime: 'spark3.5.1'
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -1148,6 +1284,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1157,6 +1294,7 @@ jobs:
         run: |
           mvn clean package -T 2 -D"$SCALA_PROFILE" -D"$FLINK_PROFILE" 
-DskipTests=true $MVN_ARGS -pl packaging/hudi-flink-bundle -am 
-Davro.version="$FLINK_AVRO_VERSION" -Dparquet.version="$FLINK_PARQUET_VERSION"
       - name: IT - Bundle Validation - OpenJDK 11
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1166,6 +1304,7 @@ jobs:
           HUDI_VERSION=$(mvn help:evaluate -Dexpression=project.version -q 
-DforceStdout)
           ./packaging/bundle-validation/ci_run.sh hudi_docker_java11 
$HUDI_VERSION openjdk11
       - name: IT - Bundle Validation - OpenJDK 17
+        if: needs.changes.outputs.relevant == 'true'
         env:
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1177,6 +1316,7 @@ jobs:
 
   integration-tests:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -1184,8 +1324,10 @@ jobs:
             flinkProfile: 'flink2.1'
             sparkArchive: 'spark-3.5.3/spark-3.5.3-bin-hadoop3.tgz'
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 11
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '11'
@@ -1193,8 +1335,10 @@ jobs:
           architecture: x64
           cache: maven
       - name: Check disk space
+        if: needs.changes.outputs.relevant == 'true'
         run: df -h
       - name: 'Free space'
+        if: needs.changes.outputs.relevant == 'true'
         run: |
           sudo rm -rf /usr/share/dotnet
           sudo rm -rf /usr/local/lib/android
@@ -1202,8 +1346,10 @@ jobs:
           sudo rm -rf /usr/local/share/boost
           docker system prune --all --force --volumes
       - name: Check disk space after cleanup
+        if: needs.changes.outputs.relevant == 'true'
         run: df -h
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
@@ -1211,12 +1357,14 @@ jobs:
         run:
           mvn clean install -T 2 $SCALA_PROFILE -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -Pintegration-tests -DskipTests=true $MVN_ARGS 
-Ddocker.compose.skip=true
       - name: 'UT integ-test'
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
           SCALA_PROFILE: '-Dscala-2.12 -Dscala.binary.version=2.12'
         run:
           mvn test $SCALA_PROFILE -D"$SPARK_PROFILE" -Pintegration-tests 
-DskipUTs=false -DskipITs=true -pl hudi-integ-test $MVN_ARGS
       - name: 'IT'
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
           SPARK_ARCHIVE: ${{ matrix.sparkArchive }}
@@ -1233,6 +1381,7 @@ jobs:
 
   build-spark-java17:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -1245,8 +1394,10 @@ jobs:
             sparkModules: "hudi-spark-datasource/hudi-spark3.5.x"
 
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -1254,6 +1405,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1261,6 +1413,7 @@ jobs:
         run:
           mvn clean install -T 2 -Djava17 -Djava.version=17 -D"$SCALA_PROFILE" 
-D"$SPARK_PROFILE" -DskipTests=true $MVN_ARGS -am -pl 
"hudi-examples/hudi-examples-spark,$SPARK_COMMON_MODULES,$SPARK_MODULES"
       - name: Quickstart Test
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           SPARK_PROFILE: ${{ matrix.sparkProfile }}
@@ -1269,6 +1422,7 @@ jobs:
 
   build-flink-java17:
     runs-on: ubuntu-latest
+    needs: changes
     strategy:
       matrix:
         include:
@@ -1277,8 +1431,10 @@ jobs:
             flinkAvroVersion: '1.11.4'
             flinkParquetVersion: '1.15.2'
     steps:
-      - uses: actions/checkout@v5
+      - if: needs.changes.outputs.relevant == 'true'
+        uses: actions/checkout@v5
       - name: Set up JDK 17
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           java-version: '17'
@@ -1286,6 +1442,7 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build Project
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
@@ -1294,6 +1451,7 @@ jobs:
         run:
           mvn clean install -T 2 -Djava17 -Djava.version=17 -D"$SCALA_PROFILE" 
-D"$FLINK_PROFILE" -pl hudi-examples/hudi-examples-flink -am 
-Davro.version="$FLINK_AVRO_VERSION" -Dparquet.version="$FLINK_PARQUET_VERSION" 
-DskipTests=true $MVN_ARGS
       - name: Quickstart Test
+        if: needs.changes.outputs.relevant == 'true'
         env:
           SCALA_PROFILE: ${{ matrix.scalaProfile }}
           FLINK_PROFILE: ${{ matrix.flinkProfile }}
@@ -1302,10 +1460,13 @@ jobs:
 
   test-hudi-trino-plugin:
     runs-on: ubuntu-latest
+    needs: changes
     steps:
       - name: Checkout repository
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/checkout@v5
       - name: Set up JDK 23
+        if: needs.changes.outputs.relevant == 'true'
         uses: actions/setup-java@v5
         with:
           # Note: We are not caching here again, as we want to use the .m2 
repository populated by
@@ -1315,10 +1476,12 @@ jobs:
           architecture: x64
           cache: maven
       - name: Build hudi-trino-plugin with JDK 23
+        if: needs.changes.outputs.relevant == 'true'
         working-directory: ./hudi-trino-plugin
         run:
           mvn clean install -DskipTests
       - name: Test hudi-trino-plugin with JDK 23
+        if: needs.changes.outputs.relevant == 'true'
         working-directory: ./hudi-trino-plugin
         run:
           mvn test -Dapi.version=1.44

Reply via email to