From d8577b0b6f681d7d119f3cb533db036aa275c678 Mon Sep 17 00:00:00 2001 From: Jungtaek Lim Date: Tue, 4 Aug 2026 13:17:10 +0900 Subject: [PATCH] [SPARK-58538][INFRA] Add branch-4.3 CI scheduler and release integration Add the CI and release plumbing that `master` maintains for each active release branch, for the newly cut `branch-4.3`: - add `.github/workflows/branch43_scheduler.yml`, modelled on `branch42_scheduler.yml`, dispatching the eight per-branch build workflows against `--ref branch-4.3`; - add `branch-4.3` to both branch lists in `publish_snapshot.yml` (the `workflow_dispatch` input default and the strategy matrix default, which the file marks as needing to stay in sync); - add a `branch-4.3` badge row to `README.md`, following the release-branch pattern (which includes `build_main.yml`, unlike the rolling `branch-4.x`). Cron hours are staggered against the existing schedulers to spread runner load: branch-4.3 uses 0, 1, 6, 8, 10, 14, 20 and 23 UTC. `dev/create-release/release-util.sh` needs no change: it derives the latest release branch by excluding `master` and `branch-4.x` and taking the highest remaining, which already resolves to `branch-4.3`. Co-authored-by: Isaac --- .github/workflows/branch43_scheduler.yml | 114 +++++++++++++++++++++++ .github/workflows/publish_snapshot.yml | 4 +- README.md | 9 ++ 3 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/branch43_scheduler.yml diff --git a/.github/workflows/branch43_scheduler.yml b/.github/workflows/branch43_scheduler.yml new file mode 100644 index 0000000000000..85c0ab74a4216 --- /dev/null +++ b/.github/workflows/branch43_scheduler.yml @@ -0,0 +1,114 @@ +# +# 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-4.3 CI Scheduler" + +on: + schedule: + - cron: '0 0 */2 * *' + - cron: '0 1 */2 * *' + - cron: '0 6 */2 * *' + - cron: '0 8 */2 * *' + - cron: '0 10 */2 * *' + - cron: '0 14 */2 * *' + - cron: '0 20 */2 * *' + - cron: '0 23 */2 * *' + workflow_dispatch: + inputs: + target: + description: Target workflow to run + required: true + type: choice + default: all + options: + - all + - maven + - maven_java21 + - java17 + - java21 + - java25 + - non_ansi + - python_3.11 + - python_3.14 + +jobs: + schedule: + if: github.repository == 'apache/spark' + runs-on: ubuntu-latest + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + permissions: + actions: write + steps: + - name: Maven Build + if: >- + github.event.schedule == '0 10 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'maven' || inputs.target == 'all')) + run: | + gh workflow run build_maven.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Maven Java 21 Build + if: >- + github.event.schedule == '0 14 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'maven_java21' || inputs.target == 'all')) + run: | + gh workflow run build_maven_java21.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Java 17 Build + if: >- + github.event.schedule == '0 8 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'java17' || inputs.target == 'all')) + run: | + gh workflow run build_java17.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Java 21 Build + if: >- + github.event.schedule == '0 1 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'java21' || inputs.target == 'all')) + run: | + gh workflow run build_java21.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Java 25 Build + if: >- + github.event.schedule == '0 6 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'java25' || inputs.target == 'all')) + run: | + gh workflow run build_java25.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Non-ANSI Build + if: >- + github.event.schedule == '0 0 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'non_ansi' || inputs.target == 'all')) + run: | + gh workflow run build_non_ansi.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Python 3.11 Build + if: >- + github.event.schedule == '0 20 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'python_3.11' || inputs.target == 'all')) + run: | + gh workflow run build_python_3.11.yml --repo ${{ github.repository }} --ref branch-4.3 + - name: Python 3.14 Build + if: >- + github.event.schedule == '0 23 */2 * *' || + (github.event_name == 'workflow_dispatch' && + (inputs.target == 'python_3.14' || inputs.target == 'all')) + run: | + gh workflow run build_python_3.14.yml --repo ${{ github.repository }} --ref branch-4.3 diff --git a/.github/workflows/publish_snapshot.yml b/.github/workflows/publish_snapshot.yml index 224f3c3207c07..80f450ba7995f 100644 --- a/.github/workflows/publish_snapshot.yml +++ b/.github/workflows/publish_snapshot.yml @@ -28,7 +28,7 @@ on: description: 'list of branches to publish (JSON)' required: true # keep in sync with default value of strategy matrix 'branch' - default: '["master", "branch-4.x", "branch-4.2", "branch-4.1", "branch-4.0", "branch-3.5"]' + default: '["master", "branch-4.x", "branch-4.3", "branch-4.2", "branch-4.1", "branch-4.0", "branch-3.5"]' jobs: publish-snapshot: @@ -39,7 +39,7 @@ jobs: max-parallel: 20 matrix: # keep in sync with default value of workflow_dispatch input 'branch' - branch: ${{ fromJSON( inputs.branch || '["master", "branch-4.x", "branch-4.2", "branch-4.1", "branch-4.0", "branch-3.5"]' ) }} + branch: ${{ fromJSON( inputs.branch || '["master", "branch-4.x", "branch-4.3", "branch-4.2", "branch-4.1", "branch-4.0", "branch-3.5"]' ) }} steps: - name: Checkout Spark repository uses: actions/checkout@v6 diff --git a/README.md b/README.md index 717822ef42035..3d79bf2d5da24 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,15 @@ 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.x)](https://github.com/apache/spark/actions/workflows/build_maven_java21.yml?query=branch%3Abranch-4.x) | | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml/badge.svg?branch=branch-4.x)](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml?query=branch%3Abranch-4.x) | | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_3.14.yml/badge.svg?branch=branch-4.x)](https://github.com/apache/spark/actions/workflows/build_python_3.14.yml?query=branch%3Abranch-4.x) | +| branch-4.3 | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_main.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_main.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_java17.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_java17.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_java21.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_java21.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_java25.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_java25.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_non_ansi.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_non_ansi.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_maven.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_maven.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_maven_java21.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_maven_java21.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_python_3.11.yml?query=branch%3Abranch-4.3) | +| | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_python_3.14.yml/badge.svg?branch=branch-4.3)](https://github.com/apache/spark/actions/workflows/build_python_3.14.yml?query=branch%3Abranch-4.3) | | branch-4.2 | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_main.yml/badge.svg?branch=branch-4.2)](https://github.com/apache/spark/actions/workflows/build_main.yml?query=branch%3Abranch-4.2) | | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_java17.yml/badge.svg?branch=branch-4.2)](https://github.com/apache/spark/actions/workflows/build_java17.yml?query=branch%3Abranch-4.2) | | | [![GitHub Actions Build](https://github.com/apache/spark/actions/workflows/build_java21.yml/badge.svg?branch=branch-4.2)](https://github.com/apache/spark/actions/workflows/build_java21.yml?query=branch%3Abranch-4.2) |