From d42a47559f91a098cfbc53c5335f7e973f2421b6 Mon Sep 17 00:00:00 2001 From: Tian Gao Date: Thu, 25 Jun 2026 13:59:45 -0700 Subject: [PATCH 1/3] [SPARK-57702][INFRA] Move scheduled CIs for 3.5 to branch-3.5 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`. Co-authored-by: Isaac --- .github/workflows/branch35_scheduler.yml | 59 +++++++++++++++++++++ .github/workflows/build_branch35.yml | 53 ------------------ .github/workflows/build_branch35_python.yml | 47 ---------------- README.md | 5 +- 4 files changed, 62 insertions(+), 102 deletions(-) create mode 100644 .github/workflows/branch35_scheduler.yml delete mode 100644 .github/workflows/build_branch35.yml delete mode 100644 .github/workflows/build_branch35_python.yml diff --git a/.github/workflows/branch35_scheduler.yml b/.github/workflows/branch35_scheduler.yml new file mode 100644 index 0000000000000..f0dbbdbf50418 --- /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.yml b/.github/workflows/build_branch35.yml deleted file mode 100644 index bb856605b5f41..0000000000000 --- a/.github/workflows/build_branch35.yml +++ /dev/null @@ -1,53 +0,0 @@ -# -# 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: "Build (branch-3.5, 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 - 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" - } diff --git a/.github/workflows/build_branch35_python.yml b/.github/workflows/build_branch35_python.yml deleted file mode 100644 index 09d4e1d4ebd77..0000000000000 --- a/.github/workflows/build_branch35_python.yml +++ /dev/null @@ -1,47 +0,0 @@ -# -# 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: "Build / Python-only (branch-3.5)" - -on: - schedule: - - cron: '0 11 */4 * *' - workflow_dispatch: - -jobs: - run-build: - permissions: - packages: write - name: Run - uses: ./.github/workflows/build_and_test.yml - 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" - } diff --git a/README.md b/README.md index 0a998223b6d14..711722cae7ba6 100644 --- a/README.md +++ b/README.md @@ -88,8 +88,9 @@ This README file only contains basic setup instructions. | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_maven_java21.yml/badge.svg?branch=branch-4.0)](https://github.com/apache/spark/actions/workflows/build_maven_java21.yml?query=branch%3Abranch-4.0) | | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml/badge.svg?branch=branch-4.0)](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml?query=branch%3Abranch-4.0) | | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_pypy3.10.yml/badge.svg?branch=branch-4.0)](https://github.com/apache/spark/actions/workflows/build_python_pypy3.10.yml?query=branch%3Abranch-4.0) | -| branch-3.5 | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_branch35.yml/badge.svg)](https://github.com/apache/spark/actions/workflows/build_branch35.yml) | -| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_branch35_python.yml/badge.svg)](https://github.com/apache/spark/actions/workflows/build_branch35_python.yml) | +| branch-3.5 | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_main.yml/badge.svg?branch=branch-3.5)](https://github.com/apache/spark/actions/workflows/build_main.yml?query=branch%3Abranch-3.5) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_scala213.yml/badge.svg?branch=branch-3.5)](https://github.com/apache/spark/actions/workflows/build_scala213.yml?query=branch%3Abranch-3.5) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_3.9.yml/badge.svg?branch=branch-3.5)](https://github.com/apache/spark/actions/workflows/build_python_3.9.yml?query=branch%3Abranch-3.5) | ## Building Spark From f8999a6e9a7c047112e146ec2c00ed64f3e53660 Mon Sep 17 00:00:00 2001 From: Tian Gao Date: Thu, 25 Jun 2026 14:13:06 -0700 Subject: [PATCH 2/3] [SPARK-57702][INFRA] Add placeholder workflows for branch-3.5 badges Add no-op placeholder `build_scala213.yml` and `build_python_3.9.yml` on `master` so the README build status badges (which resolve a workflow by its path on the default branch) render for `branch-3.5`. Neither build runs on `master`: Scala 2.13 is the default there, and master targets newer Python versions. The actual builds are defined in the same files on `branch-3.5`. Co-authored-by: Isaac --- .github/workflows/build_python_3.9.yml | 37 +++++++++++++++++++++++++ .github/workflows/build_scala213.yml | 38 ++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 .github/workflows/build_python_3.9.yml create mode 100644 .github/workflows/build_scala213.yml diff --git a/.github/workflows/build_python_3.9.yml b/.github/workflows/build_python_3.9.yml new file mode 100644 index 0000000000000..80e3ea0b63235 --- /dev/null +++ b/.github/workflows/build_python_3.9.yml @@ -0,0 +1,37 @@ +# +# 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. +# + +# 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: + workflow_dispatch: + +jobs: + noop: + if: github.repository == 'apache/spark' + 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_scala213.yml b/.github/workflows/build_scala213.yml new file mode 100644 index 0000000000000..2ceae3d230334 --- /dev/null +++ b/.github/workflows/build_scala213.yml @@ -0,0 +1,38 @@ +# +# 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. +# + +# 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 / Scala 2.13 (Hadoop 3, JDK 8)" + +on: + workflow_dispatch: + +jobs: + noop: + if: github.repository == 'apache/spark' + 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)." From 4979714dbc9198923f7cb83783011bc2790fda3d Mon Sep 17 00:00:00 2001 From: Tian Gao Date: Thu, 25 Jun 2026 14:17:00 -0700 Subject: [PATCH 3/3] [SPARK-57702][INFRA] Use common build name for scala213 placeholder Co-authored-by: Isaac --- .github/workflows/build_scala213.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_scala213.yml b/.github/workflows/build_scala213.yml index 2ceae3d230334..acdc6bea4f906 100644 --- a/.github/workflows/build_scala213.yml +++ b/.github/workflows/build_scala213.yml @@ -24,7 +24,7 @@ # build (e.g. branch-3.5). The actual build is defined in the same file on # those branches. -name: "Build / Scala 2.13 (Hadoop 3, JDK 8)" +name: "Build / Java8 (Scala 2.13, JDK 8)" on: workflow_dispatch: