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

zhouyuan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 5e9d8b7015 [CI] Skip irrelevant jobs in Velox CI workflows based on 
changed paths (#12667)
5e9d8b7015 is described below

commit 5e9d8b7015c347545d2c6d668b337914f852f6bb
Author: Yuan <[email protected]>
AuthorDate: Tue Aug 18 12:37:59 2026 +0100

    [CI] Skip irrelevant jobs in Velox CI workflows based on changed paths 
(#12667)
    
    * [CI] Skip irrelevant jobs in Velox CI workflows based on changed paths
    
    Add a `detect-changes` job (using dorny/paths-filter@v3) to the three
    Velox CI workflows so that downstream jobs are skipped when none of their
    relevant source paths were touched.
    
    velox_backend_x86.yml  – 23 jobs wired
    velox_backend_enhanced.yml – 5 jobs wired
    velox_backend_arm.yml  – 4 jobs wired
    
    Change-detection flags:
      cpp      – cpp/**, ep/build-velox/**, dev/**
      java     – all cross-version Java/Scala/Maven modules
      shims33/34/35/40/41 – version-specific shim layer + gluten-ut/sparkXX
      tools_it – tools/gluten-it/**
    
    Skip rules:
      build-native-lib, cpp-test-udf-test, build-cudf → only when cpp=true
      tpc-test-*                                      → cpp OR java OR tools_it
      spark-test-sparkXX / sparkXX-slow               → java OR shimsXX OR cpp
      build-fast-build-test                           → java OR cpp
    
    Safety: a gluten-core change sets java=true and therefore runs all
    spark-test-sparkXX jobs. Only a change scoped entirely to one
    shims/sparkXX subtree skips the other versions.
    
    Signed-off-by: Yuan <[email protected]>
---
 .github/workflows/velox_backend_arm.yml      |  35 +++++-
 .github/workflows/velox_backend_enhanced.yml |  47 +++++++-
 .github/workflows/velox_backend_x86.yml      | 166 ++++++++++++++++++++++++---
 3 files changed, 226 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/velox_backend_arm.yml 
b/.github/workflows/velox_backend_arm.yml
index c4c5fa395b..b02c128102 100644
--- a/.github/workflows/velox_backend_arm.yml
+++ b/.github/workflows/velox_backend_arm.yml
@@ -50,7 +50,34 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
+  # Detect which parts of the codebase were modified so downstream jobs can
+  # skip work that is irrelevant to the change.
+  detect-changes:
+    runs-on: ubuntu-22.04
+    outputs:
+      cpp:      ${{ steps.filter.outputs.cpp }}
+      java:     ${{ steps.filter.outputs.java }}
+      tools_it: ${{ steps.filter.outputs.tools_it }}
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Detect changed paths
+        id: filter
+        run: |
+          BASE=${{ github.event.pull_request.base.sha }}
+          HEAD=${{ github.sha }}
+          changed=$(git diff --name-only "$BASE" "$HEAD")
+          echo "$changed"
+
+          match() { echo "$changed" | grep -qE "$1" && echo true || echo 
false; }
+
+          echo "cpp=$(match      '^(cpp/|ep/build-velox/|dev/)')"              
                              >> $GITHUB_OUTPUT
+          echo "java=$(match     
'^(\.github/workflows/|pom\.xml|backends-velox/|gluten-(uniffle|celeborn|ras|core|substrait|arrow|delta|iceberg|hudi|paimon)/|gluten-ut/(common/|test/|pom\.xml)|package/|build/mvn)')"
 >> $GITHUB_OUTPUT
+          echo "tools_it=$(match '^tools/gluten-it/')"                         
                              >> $GITHUB_OUTPUT
+
   build-native-lib-centos-8:
+    needs: detect-changes
     runs-on: ubuntu-24.04-arm
     container: apache/gluten:vcpkg-centos-9
     steps:
@@ -103,7 +130,11 @@ jobs:
           if-no-files-found: error
 
   tpc-test-centos8:
-    needs: build-native-lib-centos-8
+    needs: [detect-changes, build-native-lib-centos-8]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -146,6 +177,8 @@ jobs:
             --local --preset=velox --benchmark-type=ds --error-on-memleak 
--off-heap-size=10g -s=1.0 --threads=16 --iterations=1
 
   cpp-test-udf-test:
+    needs: detect-changes
+    if: needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-24.04-arm
     container: apache/gluten:centos-9-jdk8
     steps:
diff --git a/.github/workflows/velox_backend_enhanced.yml 
b/.github/workflows/velox_backend_enhanced.yml
index 0a657e0491..ac0b1bb18c 100644
--- a/.github/workflows/velox_backend_enhanced.yml
+++ b/.github/workflows/velox_backend_enhanced.yml
@@ -51,7 +51,36 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
+  # Detect which parts of the codebase were modified so downstream jobs can
+  # skip work that is irrelevant to the change.
+  detect-changes:
+    runs-on: ubuntu-22.04
+    outputs:
+      cpp:     ${{ steps.filter.outputs.cpp }}
+      java:    ${{ steps.filter.outputs.java }}
+      shims35: ${{ steps.filter.outputs.shims35 }}
+      shims40: ${{ steps.filter.outputs.shims40 }}
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Detect changed paths
+        id: filter
+        run: |
+          BASE=${{ github.event.pull_request.base.sha }}
+          HEAD=${{ github.sha }}
+          changed=$(git diff --name-only "$BASE" "$HEAD")
+          echo "$changed"
+
+          match() { echo "$changed" | grep -qE "$1" && echo true || echo 
false; }
+
+          echo "cpp=$(match     '^(cpp/|ep/build-velox/|dev/)')"               
                              >> $GITHUB_OUTPUT
+          echo "java=$(match    
'^(\.github/workflows/|pom\.xml|backends-velox/|gluten-(uniffle|celeborn|ras|core|substrait|arrow|delta|iceberg|hudi)/|gluten-ut/(common/|test/|pom\.xml)|package/|build/mvn)')"
 >> $GITHUB_OUTPUT
+          echo "shims35=$(match 
'^(shims/(spark35|common)/|gluten-ut/spark35/)')"                            >> 
$GITHUB_OUTPUT
+          echo "shims40=$(match 
'^(shims/(spark40|common)/|gluten-ut/spark40/)')"                            >> 
$GITHUB_OUTPUT
+
   build-native-lib-centos-7:
+    needs: detect-changes
     runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v7
@@ -99,7 +128,11 @@ jobs:
           if-no-files-found: error
 
   spark-test-spark35:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims35 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     container: apache/gluten:centos-8-jdk8
     steps:
@@ -152,7 +185,11 @@ jobs:
           path: /tmp/tpch-approved-plan/**
 
   spark-test-spark35-slow:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims35 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     container: apache/gluten:centos-8-jdk8
     steps:
@@ -192,7 +229,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark40:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims40 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
diff --git a/.github/workflows/velox_backend_x86.yml 
b/.github/workflows/velox_backend_x86.yml
index a9ff3ac042..89d759e432 100644
--- a/.github/workflows/velox_backend_x86.yml
+++ b/.github/workflows/velox_backend_x86.yml
@@ -52,7 +52,57 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
+  # Detect which parts of the codebase were modified so downstream jobs can
+  # skip work that is irrelevant to the change (e.g. a Spark-3.3-shim-only 
change does
+  # not need to run spark-test-spark34/35/40/41; C++ changes still run 
spark-test-*
+  # jobs to validate JNI/native integration).
+  #
+  # Output flags:
+  #   cpp      – C++ sources, Velox build scripts, or dev tooling changed
+  #   java     – any cross-version Java/Scala/Maven source changed
+  #   shims33/34/35/40/41 – version-specific shim layer changed
+  #   tools_it – tools/gluten-it changed
+  #
+  # A job runs when ANY of the relevant flags is true, so:
+  #   • gluten-core change  → java=true  → all spark-test jobs run  ✓
+  #   • shims/spark35 only  → shims35=true → only spark35 jobs run  ✓
+  #   • pure cpp change     → cpp=true   → only native/tpc jobs run ✓
+  detect-changes:
+    runs-on: ubuntu-22.04
+    outputs:
+      cpp:      ${{ steps.filter.outputs.cpp }}
+      java:     ${{ steps.filter.outputs.java }}
+      shims33:  ${{ steps.filter.outputs.shims33 }}
+      shims34:  ${{ steps.filter.outputs.shims34 }}
+      shims35:  ${{ steps.filter.outputs.shims35 }}
+      shims40:  ${{ steps.filter.outputs.shims40 }}
+      shims41:  ${{ steps.filter.outputs.shims41 }}
+      tools_it: ${{ steps.filter.outputs.tools_it }}
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Detect changed paths
+        id: filter
+        run: |
+          BASE=${{ github.event.pull_request.base.sha }}
+          HEAD=${{ github.sha }}
+          changed=$(git diff --name-only "$BASE" "$HEAD")
+          echo "$changed"
+
+          match() { echo "$changed" | grep -qE "$1" && echo true || echo 
false; }
+
+          echo "cpp=$(match      '^(cpp/|ep/build-velox/|dev/)')"              
                              >> $GITHUB_OUTPUT
+          echo "java=$(match     
'^(\.github/workflows/|pom\.xml|backends-velox/|gluten-(uniffle|celeborn|ras|core|substrait|arrow|delta|iceberg|hudi|paimon)/|gluten-ut/(common/|test/|pom\.xml)|package/|build/mvn)')"
 >> $GITHUB_OUTPUT
+          echo "shims33=$(match  
'^(shims/(spark33|common)/|gluten-ut/spark33/)')"                           >> 
$GITHUB_OUTPUT
+          echo "shims34=$(match  
'^(shims/(spark34|common)/|gluten-ut/spark34/)')"                           >> 
$GITHUB_OUTPUT
+          echo "shims35=$(match  
'^(shims/(spark35|common)/|gluten-ut/spark35/)')"                           >> 
$GITHUB_OUTPUT
+          echo "shims40=$(match  
'^(shims/(spark40|common)/|gluten-ut/spark40/)')"                           >> 
$GITHUB_OUTPUT
+          echo "shims41=$(match  
'^(shims/(spark41|common)/|gluten-ut/spark41/)')"                           >> 
$GITHUB_OUTPUT
+          echo "tools_it=$(match '^tools/gluten-it/')"                         
                              >> $GITHUB_OUTPUT
+
   build-native-lib-centos-7:
+    needs: detect-changes
     runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v7
@@ -99,7 +149,11 @@ jobs:
           if-no-files-found: error
 
   tpc-test-ubuntu:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -228,7 +282,11 @@ jobs:
           fi
 
   tpc-test-centos8:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -311,7 +369,11 @@ jobs:
             --local --preset=velox --benchmark-type=ds --error-on-memleak 
--off-heap-size=10g -s=1.0 --threads=16 --iterations=1
 
   tpc-test-centos7:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -354,7 +416,11 @@ jobs:
           "
 
   tpc-test-ubuntu-oom:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -464,7 +530,11 @@ jobs:
             -d=IO_THREADS:0,spark.gluten.sql.columnar.backend.velox.IOThreads=0
 
   tpc-test-ubuntu-randomkill:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -512,7 +582,11 @@ jobs:
             --data-gen=skip  --random-kill-tasks --no-session-reuse 
--shard=${{ matrix.shard }}/3
 
   tpc-test-centos8-uniffle:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -558,7 +632,11 @@ jobs:
             --local --preset=velox-with-uniffle --benchmark-type=h 
--error-on-memleak --off-heap-size=10g -s=1.0 --threads=16 --iterations=1
 
   tpc-test-ubuntu-2204-celeborn:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.cpp == 'true' ||
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.tools_it == 'true'
     strategy:
       fail-fast: false
       matrix:
@@ -631,7 +709,11 @@ jobs:
           fi
 
   spark-test-spark33:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims33 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     env:
       SPARK_TESTING: true
@@ -684,7 +766,11 @@ jobs:
           path: /tmp/tpch-approved-plan/**
 
   spark-test-spark33-slow:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims33 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     env:
       SPARK_TESTING: true
@@ -727,7 +813,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark34:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims34 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -794,7 +884,11 @@ jobs:
           path: /tmp/tpch-approved-plan/**
 
   spark-test-spark34-slow:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims34 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -842,7 +936,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark35:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims35 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -910,7 +1008,11 @@ jobs:
           path: /tmp/tpch-approved-plan/**
 
   spark-test-spark35-scala213:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims35 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -972,7 +1074,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark35-slow:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims35 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -1021,6 +1127,8 @@ jobs:
             **/gluten-ut/**/core.*
 
   cpp-test-udf-test:
+    needs: detect-changes
+    if: needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     container: apache/gluten:centos-9-jdk8
     steps:
@@ -1138,6 +1246,8 @@ jobs:
           path: "**/target/*.log"
 
   build-cudf-centos-9:
+    needs: detect-changes
+    if: needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     steps:
       - name: "node-cleanup" # by default the free runner does not have enough 
disk space
@@ -1188,6 +1298,10 @@ jobs:
           "
 
   build-fast-build-test:
+    needs: detect-changes
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     container: apache/gluten:centos-8-jdk17
     steps:
@@ -1198,7 +1312,11 @@ jobs:
           $MVN_CMD clean test-compile -Pspark-4.0 -Pscala-2.13 
-Pbackends-velox -Pspark-ut -Piceberg,iceberg-test,delta,paimon -Pfast-build
 
   spark-test-spark40:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims40 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -1260,7 +1378,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark40-slow:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims40 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -1309,7 +1431,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark41:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims41 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false
@@ -1380,7 +1506,11 @@ jobs:
             **/gluten-ut/**/core.*
 
   spark-test-spark41-slow:
-    needs: build-native-lib-centos-7
+    needs: [detect-changes, build-native-lib-centos-7]
+    if: >-
+      needs.detect-changes.outputs.java == 'true' ||
+      needs.detect-changes.outputs.shims41 == 'true' ||
+      needs.detect-changes.outputs.cpp == 'true'
     runs-on: ubuntu-22.04
     strategy:
       fail-fast: false


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to