This is an automated email from the ASF dual-hosted git repository. potiuk pushed a commit to branch disable-v3-4-test-ci in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 0fb413022fc0d26fa16b120d1806dbf10fa41f24 Author: Jarek Potiuk <[email protected]> AuthorDate: Tue Oct 6 10:25:02 2026 +0200 Pause v3-4-test automation while it is fast-forwarded for 3.4.0 betas During the 3.4.0 beta phase v3-4-test is moved forward to main rather than receiving cherry-picks. Any commit added directly to the branch - an automated CI upgrade PR such as #74324, a Dependabot bump or an automatic backport - makes it diverge from main and breaks the next fast-forward, while the same change reaches the branch from main anyway. The release instructions did not describe this phase, so they now explain when it starts and ends and what has to be paused and re-enabled around it. Generated-by: Claude Opus 5 --- .github/boring-cyborg.yml | 29 +++++++++-------- .github/dependabot.yml | 21 ++++++++++++ .github/workflows/automatic-backport.yml | 14 +++++++- .../scheduled-upgrade-check-v3-4-test.yml | 9 +++-- dev/README_RELEASE_AIRFLOW.md | 38 ++++++++++++++++++++++ 5 files changed, 94 insertions(+), 17 deletions(-) diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml index 7ab7202c442..b31f037ce0f 100644 --- a/.github/boring-cyborg.yml +++ b/.github/boring-cyborg.yml @@ -373,23 +373,26 @@ labelPRBasedOnFilePath: - .rat-excludes - .readthedocs.yml + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - nothing is + # cherry-picked yet. Uncomment when cherry-picking starts (see "Beta releases" in + # dev/README_RELEASE_AIRFLOW.md). # This should be copy of the "area:dev-tools" above minus contributing docs and some files that should # only make sense in main - it should be updated when we switch maintenance branch. # Scoped to PRs targeting `main` only — a PR opened directly against v3-4-test # does not need a backport-to-v3-4-test label. - backport-to-v3-4-test: - paths: - - scripts/**/* - - dev/**/* - - .github/**/* - - Dockerfile.ci - - yamllint-config.yml - - .dockerignore - - .hadolint.yaml - - .pre-commit-config.yaml - - .rat-excludes - targetBranchFilter: - - ^main$ + # backport-to-v3-4-test: + # paths: + # - scripts/**/* + # - dev/**/* + # - .github/**/* + # - Dockerfile.ci + # - yamllint-config.yml + # - .dockerignore + # - .hadolint.yaml + # - .pre-commit-config.yaml + # - .rat-excludes + # targetBranchFilter: + # - ^main$ # Apply to PRs touching airflow-ctl code so the release manager notices when a # fix should land on the airflow-ctl/v0-1-test maintenance branch. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c310b473518..685a1380c79 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -46,6 +46,9 @@ updates: # Check for updates to GitHub Actions every week interval: "weekly" target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: github-actions-updates: patterns: @@ -265,6 +268,9 @@ updates: schedule: interval: daily target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: pip-dependency-updates: patterns: @@ -278,6 +284,9 @@ updates: schedule: interval: "weekly" target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: 3-4-core-ui-package-updates: patterns: @@ -297,6 +306,9 @@ updates: schedule: interval: "weekly" target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: 3-4-auth-ui-package-updates: patterns: @@ -325,6 +337,9 @@ updates: schedule: interval: "weekly" target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: 3-4-registry-package-updates: patterns: @@ -344,6 +359,9 @@ updates: schedule: interval: "weekly" target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: 3-4-ui-plugin-template-package-updates: patterns: @@ -362,6 +380,9 @@ updates: schedule: interval: "weekly" target-branch: v3-4-test + # Paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - remove when + # cherry-picking starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + open-pull-requests-limit: 0 groups: 3-4-uv-dependency-updates: patterns: diff --git a/.github/workflows/automatic-backport.yml b/.github/workflows/automatic-backport.yml index daa142e9dfc..fa3d8c6a369 100644 --- a/.github/workflows/automatic-backport.yml +++ b/.github/workflows/automatic-backport.yml @@ -48,8 +48,13 @@ jobs: uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Branches fast-forwarded to main during a beta phase - a backport PR there would make + # them diverge from main. Empty this list when cherry-picking starts (see "Beta releases" + # in dev/README_RELEASE_AIRFLOW.md). + BACKPORT_PAUSED_BRANCHES: '["v3-4-test"]' with: script: | + const pausedBranches = JSON.parse(process.env.BACKPORT_PAUSED_BRANCHES); const { data: pullRequest } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ owner: context.repo.owner, repo: context.repo.repo, @@ -59,7 +64,14 @@ jobs: const pr = pullRequest[0]; const backportBranches = pr.labels .filter(label => label.name.startsWith('backport-to-')) - .map(label => label.name.replace('backport-to-', '')); + .map(label => label.name.replace('backport-to-', '')) + .filter(branch => { + if (pausedBranches.includes(branch)) { + console.log(`⚠️ Skipping backport to ${branch}: backports to it are paused.`); + return false; + } + return true; + }); console.log(`Commit ${process.env.GITHUB_SHA} is associated with PR ${pr.number}`); console.log(`Backport branches: ${backportBranches}`); diff --git a/.github/workflows/scheduled-upgrade-check-v3-4-test.yml b/.github/workflows/scheduled-upgrade-check-v3-4-test.yml index 604fcb2ed8f..046694d83af 100644 --- a/.github/workflows/scheduled-upgrade-check-v3-4-test.yml +++ b/.github/workflows/scheduled-upgrade-check-v3-4-test.yml @@ -18,9 +18,12 @@ --- name: "[v3-4-test] Scheduled CI upgrade check" on: # yamllint disable-line rule:truthy - schedule: - # Tue, Thu at 06:00 UTC — the days main does not run, so the two never overlap. - - cron: '0 6 * * 2,4' + # Schedule paused while v3-4-test is fast-forwarded to main for the 3.4.0 betas - upgrades + # land on main and reach v3-4-test with the next fast-forward. Re-enable when cherry-picking + # starts (see "Beta releases" in dev/README_RELEASE_AIRFLOW.md). + # schedule: + # # Tue, Thu at 06:00 UTC — the days main does not run, so the two never overlap. + # - cron: '0 6 * * 2,4' workflow_dispatch: permissions: contents: write diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md index 8516657ab9d..71e0fa7ff42 100644 --- a/dev/README_RELEASE_AIRFLOW.md +++ b/dev/README_RELEASE_AIRFLOW.md @@ -23,6 +23,7 @@ - [Collect ambiguities during the release (for a follow-up doc PR)](#collect-ambiguities-during-the-release-for-a-follow-up-doc-pr) - [Perform review of security issues that are marked for the release](#perform-review-of-security-issues-that-are-marked-for-the-release) - [Selecting what to put into the release](#selecting-what-to-put-into-the-release) + - [Beta releases: fast-forwarding `vX-Y-test` to `main`](#beta-releases-fast-forwarding-vx-y-test-to-main) - [i18n workflow](#i18n-workflow) - [Selecting what to cherry-pick](#selecting-what-to-cherry-pick) - [Making the cherry picking](#making-the-cherry-picking) @@ -104,6 +105,39 @@ The first step of a release is to work out what is being included. This differs - For a *patch* release, you will be selecting specific commits to cherry-pick and backport into the existing release branch. +## Beta releases: fast-forwarding `vX-Y-test` to `main` + +For a *major* or *minor* release, the `vX-Y-test` branch is created early (see +[Build RC artifacts](#build-rc-artifacts)), but while the beta releases (`X.Y.0b1`, `X.Y.0b2`, ...) +are being prepared nothing is cherry-picked to it yet. Instead, the release manager periodically +moves `vX-Y-test` forward to the current `main` - only the branch-specific commits (such as +`Update default branches for X.Y`) are kept on top of `main`. Each beta is cut from the branch +in that state, so everything merged to `main` lands in the next beta. + +During this phase, all automation that would add commits directly to `vX-Y-test` must be paused - +any such commit makes `vX-Y-test` diverge from `main` and breaks the next fast-forward. Upgrades and +fixes land on `main` only and reach `vX-Y-test` with the next fast-forward. When you add the new +branch to the `.github/` configuration on `main` (see below), pause the following on `main` for +`vX-Y-test` at the same time (every paused place is marked with a comment pointing to this section): + +- `.github/workflows/scheduled-upgrade-check-vX-Y-test.yml` - comment out the `schedule` trigger + (keep `workflow_dispatch`), so no `[vX-Y-test] Upgrade important CI environment` PRs are opened. +- `.github/dependabot.yml` - add `open-pull-requests-limit: 0` to every `target-branch: vX-Y-test` + entry, so Dependabot does not open version-update PRs against the branch. +- `.github/boring-cyborg.yml` - comment out the `backport-to-vX-Y-test` auto-labelling rule. +- `.github/workflows/automatic-backport.yml` - add `vX-Y-test` to `BACKPORT_PAUSED_BRANCHES`, so a + `backport-to-vX-Y-test` label added by hand does not open a backport PR either. + +Close any PR that was opened against `vX-Y-test` by this automation before it was paused - the +change reaches the branch from `main` anyway. + +The fast-forward phase ends when the release manager stops taking everything from `main` - usually +just before the first release candidate (`X.Y.0rc1`), when `main` starts accepting changes meant for +the next minor release. From that point on `vX-Y-test` diverges from `main` and changes reach it +only by cherry-picking, as for a patch release. Announce the switch on the [email protected] +list (so contributors know they need to start adding `backport-to-vX-Y-test` labels and milestones +to the PRs they want in `X.Y.0`) and revert all the pauses listed above in a PR to `main`. + ## i18n workflow @@ -486,6 +520,10 @@ still works but is no longer recommended. - `.github/workflows/milestone-tag-assistant.yml` — add `vX-Y-test` to the push branches list. - `.github/workflows/basic-tests.yml` — update the release-management dry-run commands to test the new version. - `.github/workflows/ci-notification.yml` — switch the `workflow-status` matrix branch to the new branch. + + If the new branch is going through beta releases first, pause the automation that adds commits to + `vX-Y-test` in the same PR, as described in + [Beta releases: fast-forwarding `vX-Y-test` to `main`](#beta-releases-fast-forwarding-vx-y-test-to-main). - Commit the above changes with the message `Update version to ${VERSION}`. - Build the release notes:
