This is an automated email from the ASF dual-hosted git repository.
gaogaotiantian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 0713f23d2e3c [SPARK-57702][INFRA] Move scheduled CIs for 3.5 to
branch-3.5
0713f23d2e3c is described below
commit 0713f23d2e3c0218ec064d173f1e41c96534e265
Author: Tian Gao <[email protected]>
AuthorDate: Mon Jun 29 13:28:15 2026 -0700
[SPARK-57702][INFRA] Move scheduled CIs for 3.5 to branch-3.5
### What changes were proposed in this pull request?
Add a unified entry for all scheduled CIs for branch-3.5
(`branch35_scheduler.yml`). It uses `gh workflow` to trigger the self-contained
build workflows on `branch-3.5`, and removes the per-build
`build_branch35*.yml` files from `master`.
This follows the same approach as SPARK-56990 (#56046) for `branch-4.x`,
SPARK-57327 (#56379) for `branch-4.1`, and SPARK-57483 (#56530) for
`branch-4.0`. SPARK-57621 (#56679) already laid the ground on `branch-3.5` by
making the build workflows self-contained and dispatchable, so this PR only
needs to change the `master` scheduled tasks.
The scheduler triggers the following targets on `branch-3.5` (also exposed
via `workflow_dispatch`): `build_scala213`, `build_python_3.9`. The cron
schedule preserves the original `0 11 */4 * *` time and `*/4` frequency from
the `build_branch35*.yml` files (both builds shared `0 11`, as before).
`README.md` is updated so the branch-3.5 badges point at the self-contained
workflows filtered by `?branch=branch-3.5`.
### Why are the changes needed?
This is part of decoupling our CIs. All `branch-3.5` related CIs should
only rely on files on `branch-3.5`, with the exception of this new scheduler
file which is needed on `master` to trigger scheduled tasks (scheduled
workflows only fire from the default branch).
### Does this PR introduce _any_ user-facing change?
No. CI only.
### How was this patch tested?
These workflows can be triggered manually via `workflow_dispatch` once
merged.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 4.8)
Closes #56783 from gaogaotiantian/branch35-scheduler.
Authored-by: Tian Gao <[email protected]>
Signed-off-by: Tian Gao <[email protected]>
---
.github/workflows/branch35_scheduler.yml | 59 ++++++++++++++++++++++
...ld_branch35_python.yml => build_python_3.9.yml} | 34 +++++--------
.../{build_branch35.yml => build_scala213.yml} | 41 +++++----------
README.md | 5 +-
4 files changed, 87 insertions(+), 52 deletions(-)
diff --git a/.github/workflows/branch35_scheduler.yml
b/.github/workflows/branch35_scheduler.yml
new file mode 100644
index 000000000000..f0dbbdbf5041
--- /dev/null
+++ b/.github/workflows/branch35_scheduler.yml
@@ -0,0 +1,59 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+name: "Branch-3.5 CI Scheduler"
+
+on:
+ schedule:
+ - cron: '0 11 */4 * *'
+ workflow_dispatch:
+ inputs:
+ target:
+ description: Target workflow to run
+ required: true
+ type: choice
+ default: all
+ options:
+ - all
+ - scala213
+ - python_3.9
+
+jobs:
+ schedule:
+ if: github.repository == 'apache/spark'
+ runs-on: ubuntu-latest
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ permissions:
+ actions: write
+ steps:
+ - name: Scala 2.13 Build
+ if: >-
+ github.event.schedule == '0 11 */4 * *' ||
+ (github.event_name == 'workflow_dispatch' &&
+ (inputs.target == 'scala213' || inputs.target == 'all'))
+ run: |
+ gh workflow run build_scala213.yml --repo ${{ github.repository }}
--ref branch-3.5
+ - name: Python 3.9 Build
+ if: >-
+ github.event.schedule == '0 11 */4 * *' ||
+ (github.event_name == 'workflow_dispatch' &&
+ (inputs.target == 'python_3.9' || inputs.target == 'all'))
+ run: |
+ gh workflow run build_python_3.9.yml --repo ${{ github.repository }}
--ref branch-3.5
diff --git a/.github/workflows/build_branch35_python.yml
b/.github/workflows/build_python_3.9.yml
similarity index 59%
rename from .github/workflows/build_branch35_python.yml
rename to .github/workflows/build_python_3.9.yml
index 09d4e1d4ebd7..80e3ea0b6323 100644
--- a/.github/workflows/build_branch35_python.yml
+++ b/.github/workflows/build_python_3.9.yml
@@ -17,31 +17,21 @@
# under the License.
#
-name: "Build / Python-only (branch-3.5)"
+# This is a placeholder. Python 3.9 is not built on master, which targets newer
+# Python versions. The file exists here only so that the README build status
+# badge, which resolves a workflow by its path on the default branch, renders
+# for the branches that still run it (e.g. branch-3.5). The actual build is
+# defined in the same file on those branches.
+
+name: "Build / Python-only (Python 3.9)"
on:
- schedule:
- - cron: '0 11 */4 * *'
workflow_dispatch:
jobs:
- run-build:
- permissions:
- packages: write
- name: Run
- uses: ./.github/workflows/build_and_test.yml
+ noop:
if: github.repository == 'apache/spark'
- with:
- java: 8
- branch: branch-3.5
- hadoop: hadoop3
- envs: >-
- {
- "PYSPARK_IMAGE_TO_TEST": "",
- "PYTHON_TO_TEST": ""
- }
- jobs: >-
- {
- "pyspark": "true",
- "pyspark-pandas": "true"
- }
+ runs-on: ubuntu-latest
+ steps:
+ - name: No-op
+ run: echo "Python 3.9 is not built on this branch. See branches that
still support it (e.g. branch-3.5)."
diff --git a/.github/workflows/build_branch35.yml
b/.github/workflows/build_scala213.yml
similarity index 54%
rename from .github/workflows/build_branch35.yml
rename to .github/workflows/build_scala213.yml
index bb856605b5f4..acdc6bea4f90 100644
--- a/.github/workflows/build_branch35.yml
+++ b/.github/workflows/build_scala213.yml
@@ -17,37 +17,22 @@
# under the License.
#
-name: "Build (branch-3.5, Scala 2.13, JDK 8)"
+# This is a placeholder. Scala 2.13 is the default on master, so there is no
+# separate scheduled Scala 2.13 build here. The file exists only so that the
+# README build status badge, which resolves a workflow by its path on the
+# default branch, renders for the branches that still run it as a separate
+# build (e.g. branch-3.5). The actual build is defined in the same file on
+# those branches.
+
+name: "Build / Java8 (Scala 2.13, JDK 8)"
on:
- schedule:
- - cron: '0 11 */4 * *'
workflow_dispatch:
jobs:
- run-build:
- permissions:
- packages: write
- name: Run
- uses: ./.github/workflows/build_and_test.yml
+ noop:
if: github.repository == 'apache/spark'
- with:
- java: 8
- branch: branch-3.5
- hadoop: hadoop3
- envs: >-
- {
- "SCALA_PROFILE": "scala2.13",
- "PYSPARK_IMAGE_TO_TEST": "",
- "PYTHON_TO_TEST": "",
- "ORACLE_DOCKER_IMAGE_NAME": "gvenzl/oracle-xe:21.3.0"
- }
- jobs: >-
- {
- "build": "true",
- "sparkr": "true",
- "tpcds-1g": "true",
- "docker-integration-tests": "true",
- "k8s-integration-tests": "true",
- "lint" : "true"
- }
+ runs-on: ubuntu-latest
+ steps:
+ - name: No-op
+ run: echo "Scala 2.13 is the default on master and is not built
separately. See branches that run it as a separate build (e.g. branch-3.5)."
diff --git a/README.md b/README.md
index 0a998223b6d1..711722cae7ba 100644
--- a/README.md
+++ b/README.md
@@ -88,8 +88,9 @@ This README file only contains basic setup instructions.
| | [](https://github.com/apache/spark/actions/workflows/build_maven_java21.yml?query=branch%3Abranch-4.0)
|
| | [](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml?query=branch%3Abranch-4.0)
|
| | [](https://github.com/apache/spark/actions/workflows/build_python_pypy3.10.yml?query=branch%3Abranch-4.0)
|
-| branch-3.5 | [](https://github.com/apache/spark/actions/workflows/build_branch35.yml)
|
-| | [](https://github.com/apache/spark/actions/workflows/build_branch35_python.yml)
|
+| branch-3.5 | [](https://github.com/apache/spark/actions/workflows/build_main.yml?query=branch%3Abranch-3.5)
|
+| | [](https://github.com/apache/spark/actions/workflows/build_scala213.yml?query=branch%3Abranch-3.5)
|
+| | [](https://github.com/apache/spark/actions/workflows/build_python_3.9.yml?query=branch%3Abranch-3.5)
|
## Building Spark
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]