felipepessoto commented on code in PR #12388:
URL: https://github.com/apache/gluten/pull/12388#discussion_r3669339006
##########
.github/workflows/velox_backend_x86.yml:
##########
@@ -101,6 +106,80 @@ jobs:
path: ./cpp/build/
if-no-files-found: error
+ # Gate the (expensive) Delta Spark UT suite so per-PR it runs only when the
PR
+ # touches high-signal Delta paths -- the Delta integration code
+ # (backends-velox/src-delta*), the gluten-delta module, or this pipeline's
own
+ # files -- or carries the `run-delta-ci` opt-in label. Changes to general
+ # Velox/core/native code can also affect Delta offload but are touched
+ # constantly, so per-PR they skip it; the nightly full run
(delta_spark_ut.yml
+ # `schedule`) and the opt-in label are the safety nets. This keeps GHA usage
+ # down. NOTE: the label is read from the event that triggered this run, so
add
+ # it before/with a push; labeling an already-finished run needs a new push.
+ delta-changes:
+ runs-on: ubuntu-22.04
+ outputs:
+ run_delta: ${{ steps.filter.outputs.run_delta }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Detect Delta-relevant changes / opt-in label
+ id: filter
+ env:
+ HAS_LABEL: ${{ contains(github.event.pull_request.labels.*.name,
'run-delta-ci') }}
+ BASE_SHA: ${{ github.event.pull_request.base.sha }}
+ HEAD_SHA: ${{ github.event.pull_request.head.sha }}
+ run: |
+ set -euo pipefail
+ # Opt-in label forces the suite even with no Delta-relevant path
change.
+ if [ "$HAS_LABEL" = "true" ]; then
+ echo "run-delta-ci label present -> running Delta suite"
+ echo "run_delta=true" >> "$GITHUB_OUTPUT"; exit 0
+ fi
+ # Fail open if we can't determine the PR range (e.g. a non-PR
trigger):
+ # never silently skip coverage.
+ if [ -z "${BASE_SHA:-}" ] || [ -z "${HEAD_SHA:-}" ]; then
+ echo "no PR base/head sha -> running Delta suite (fail-open)"
+ echo "run_delta=true" >> "$GITHUB_OUTPUT"; exit 0
+ fi
+ BASE=$(git merge-base "$BASE_SHA" "$HEAD_SHA" 2>/dev/null || echo
"$BASE_SHA")
+ echo "diff base=$BASE head=$HEAD_SHA"
+ # Fail open if the diff itself can't be computed (missing objects
after a
+ # force-push race, an unfetched fork head, ...). Piping straight into
+ # `grep -q` inside an `if` would hide that: git's failure leaves
grep with
+ # empty input, so the pipeline exits non-zero exactly as it does for
"no
+ # match" -- and `set -e`/`pipefail` can't help, since a tested
command is
+ # allowed to fail. Capture the diff first so the two cases stay
distinct.
+ if ! CHANGED=$(git diff --name-only "$BASE" "$HEAD_SHA"); then
Review Comment:
This PR is a fork PR ( felipepessoto/gluten → apache/gluten ), and across
4/4 runs delta-changes printed Delta-relevant paths changed , never git
diff failed . The fork head is reachable because refs/pull/N/merge 's second
parent is the fork head commit, so checkout brings it into the local object
store.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]