This is an automated email from the ASF dual-hosted git repository.
zhengruifeng pushed a commit to branch branch-4.x
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-4.x by this push:
new 16a2797a5c81 [SPARK-58285][INFRA] Remove stale container CI dependency
bypasses
16a2797a5c81 is described below
commit 16a2797a5c813b32da2d1f85045ab656f38bdf1a
Author: Ruifeng Zheng <[email protected]>
AuthorDate: Thu Jul 23 20:40:01 2026 +0800
[SPARK-58285][INFRA] Remove stale container CI dependency bypasses
### What changes were proposed in this pull request?
Removes the cancelled-status dependency bypasses from the PySpark, SparkR,
lint, and documentation jobs. Replaces the PySpark matrix's obsolete non-master
fallback comments with descriptions of the entries selected by each change gate.
### Why are the changes needed?
The bypasses were introduced when non-master jobs used static fallback
container images. These jobs now use per-run images produced by infra-image.
When that build fails, the bypass still schedules the entire PySpark matrix and
the SparkR, lint, and documentation jobs; they then fail minutes later while
trying to start from images that were never pushed. No dependent container job
can run successfully in that state, so GitHub Actions should block them until
infra-image succeeds.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Ran git diff --check. No test suite was run because this is a GitHub
Actions job-condition and comment change.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Codex (GPT-5)
Closes #57457 from zhengruifeng/remove-pyspark-needs-bypass-dev4.
Authored-by: Ruifeng Zheng <[email protected]>
Signed-off-by: Ruifeng Zheng <[email protected]>
(cherry picked from commit 3ce5de6baa381f1ee07b3d334a8c5ec3e06dbc25)
Signed-off-by: Ruifeng Zheng <[email protected]>
---
.github/workflows/build_and_test.yml | 23 ++++++-----------------
1 file changed, 6 insertions(+), 17 deletions(-)
diff --git a/.github/workflows/build_and_test.yml
b/.github/workflows/build_and_test.yml
index 78cc56082cc7..b81592650aac 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -325,9 +325,6 @@ jobs:
excluded-tags:
org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowSQLTest
comment: "- other tests"
exclude:
- # Always run if yarn == 'true', even infra-image is skip (such as
non-master job)
- # In practice, the build will run in individual PR, but not against
the individual commit
- # in Apache Spark repository.
- modules: ${{ fromJson(needs.precondition.outputs.required).yarn !=
'true' && 'yarn' }}
# Skip the core/utils group when a PR doesn't touch those modules
(e.g. SQL-only or
# PySpark-only changes). The precondition is opt-out: omitted means
run (so periodic
@@ -622,8 +619,9 @@ jobs:
pyspark:
needs: [precondition, infra-image, precompile]
- # always run if pyspark == 'true', even infra-image is skip (such as
non-master job)
- if: (!cancelled()) &&
(fromJson(needs.precondition.outputs.required).pyspark == 'true' ||
fromJson(needs.precondition.outputs.required).pyspark-pandas == 'true')
+ if: >-
+ fromJson(needs.precondition.outputs.required).pyspark == 'true' ||
+ fromJson(needs.precondition.outputs.required).pyspark-pandas == 'true'
name: "Build modules: ${{ matrix.modules }}"
runs-on: ubuntu-latest
timeout-minutes: 120
@@ -660,9 +658,6 @@ jobs:
- >-
pyspark-pandas-slow-connect
exclude:
- # Always run if pyspark == 'true', even infra-image is skip (such as
non-master job)
- # In practice, the build will run in individual PR, but not against
the individual commit
- # in Apache Spark repository.
- modules: ${{ fromJson(needs.precondition.outputs.required).pyspark
!= 'true' && 'pyspark-sql, pyspark-resource, pyspark-testing, pyspark-core,
pyspark-errors, pyspark-logger' }}
- modules: ${{ fromJson(needs.precondition.outputs.required).pyspark
!= 'true' && 'pyspark-mllib, pyspark-ml, pyspark-ml-connect' }}
- modules: ${{ fromJson(needs.precondition.outputs.required).pyspark
!= 'true' && 'pyspark-streaming, pyspark-structured-streaming,
pyspark-structured-streaming-connect' }}
@@ -670,9 +665,6 @@ jobs:
- modules: ${{
fromJson(needs.precondition.outputs.required).pyspark-connect-old-client !=
'true' && 'pyspark-connect-old-client'}}
# pyspark-install is very slow so we only run it when it's changed
or explicity requested
- modules: ${{
fromJson(needs.precondition.outputs.required).pyspark-install != 'true' &&
'pyspark-install' }}
- # Always run if pyspark-pandas == 'true', even infra-image is skip
(such as non-master job)
- # In practice, the build will run in individual PR, but not against
the individual commit
- # in Apache Spark repository.
- modules: ${{
fromJson(needs.precondition.outputs.required).pyspark-pandas != 'true' &&
'pyspark-pandas' }}
- modules: ${{
fromJson(needs.precondition.outputs.required).pyspark-pandas != 'true' &&
'pyspark-pandas-slow' }}
- modules: ${{
fromJson(needs.precondition.outputs.required).pyspark-pandas != 'true' &&
'pyspark-pandas-connect' }}
@@ -855,8 +847,7 @@ jobs:
sparkr:
needs: [precondition, infra-image, precompile]
- # always run if sparkr == 'true', even infra-image is skip (such as
non-master job)
- if: (!cancelled()) && fromJson(needs.precondition.outputs.required).sparkr
== 'true'
+ if: fromJson(needs.precondition.outputs.required).sparkr == 'true'
name: "Build modules: sparkr"
runs-on: ubuntu-latest
timeout-minutes: 120
@@ -1049,8 +1040,7 @@ jobs:
# Static analysis
lint:
needs: [precondition, infra-image]
- # always run if lint == 'true', even infra-image is skip (such as
non-master job)
- if: (!cancelled()) && fromJson(needs.precondition.outputs.required).lint
== 'true'
+ if: fromJson(needs.precondition.outputs.required).lint == 'true'
name: Linters, licenses, and dependencies
runs-on: ubuntu-latest
timeout-minutes: 120
@@ -1183,8 +1173,7 @@ jobs:
# Documentation build
docs:
needs: [precondition, infra-image]
- # always run if lint == 'true', even infra-image is skip (such as
non-master job)
- if: (!cancelled()) && fromJson(needs.precondition.outputs.required).docs
== 'true'
+ if: fromJson(needs.precondition.outputs.required).docs == 'true'
name: Documentation generation
runs-on: ubuntu-latest
timeout-minutes: 120
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]