This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 0b8c6431949 ci: also build ARM on pushes to release-prep / providers
branches (#66668)
0b8c6431949 is described below
commit 0b8c6431949f69348bc8eccdd1cdc7a4bbc0f134
Author: Jarek Potiuk <[email protected]>
AuthorDate: Mon May 11 01:03:35 2026 +0200
ci: also build ARM on pushes to release-prep / providers branches (#66668)
Until now, post-merge pushes to v[0-9]+-[0-9]+-test and
providers-*/v* branches only triggered the AMD wrapper
(`ci-amd.yml`); ARM coverage on those branches was limited to the
cron-driven canary. Add the same `push:` block to `ci-arm.yml`
so both architectures build whenever a release-prep / providers
branch advances.
`main` is intentionally NOT in the ARM push list — main pushes
stay AMD-only via `ci-amd.yml` and ARM main coverage continues
to come from the canary cron. This avoids doubling the ARM
runner load on the high-traffic main branch while still surfacing
ARM regressions on every release-prep / providers commit.
Knock-on changes:
- ci-amd.yml: reorder `pull_request:` to come before `push:` so
the AMD-only schedule + pull_request remains a contiguous block
for the strip mechanism in `check-ci-workflows-in-sync`. Same
comment text added to its `push:` block as ci-arm.yml's so
the two read identically.
- check_ci_workflows_in_sync.py: drop the `push:` block from
`AMD_ONLY_BLOCK` (push is now shared between both wrappers and
therefore must not be stripped from either side). Update item 3
in the docstring to reflect the new trigger split.
- README.md and generated/PYPI_README.md: add the ARM badge to
the 3.x row alongside AMD (Main row already had both).
Generated-by: Claude Code (Opus 4.7)
---
.github/workflows/ci-amd.yml | 13 +++++++++----
.github/workflows/ci-arm.yml | 9 +++++++++
README.md | 2 +-
generated/PYPI_README.md | 2 +-
scripts/ci/prek/check_ci_workflows_in_sync.py | 14 +++++++-------
5 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/ci-amd.yml b/.github/workflows/ci-amd.yml
index 51b0c5bc2d3..1e79582747a 100644
--- a/.github/workflows/ci-amd.yml
+++ b/.github/workflows/ci-amd.yml
@@ -30,10 +30,6 @@ on: # yamllint disable-line rule:truthy
# offset by 30 min from ARM's `:28` slot in `ci-arm.yml` so the two
scheduled
# canaries don't compete for runners at exactly the same minute.
- cron: '58 1,7,13,19 * * *'
- push:
- branches:
- - v[0-9]+-[0-9]+-test
- - providers-[a-z]+-?[a-z]*/v[0-9]+-[0-9]+
pull_request:
branches:
- main
@@ -41,6 +37,15 @@ on: # yamllint disable-line rule:truthy
- v[0-9]+-[0-9]+-stable
- providers-[a-z]+-?[a-z]*/v[0-9]+-[0-9]+
types: [opened, reopened, synchronize, ready_for_review]
+ push:
+ # Post-merge pushes to release-prep / providers branches run on both
+ # AMD and ARM (the matching block lives in the other wrapper too —
+ # `check-ci-workflows-in-sync` enforces they stay identical). `main` is
+ # intentionally NOT in this list: main pushes stay AMD-only via
+ # `ci-amd.yml`; ARM main coverage is the cron-driven canary above.
+ branches:
+ - v[0-9]+-[0-9]+-test
+ - providers-[a-z]+-?[a-z]*/v[0-9]+-[0-9]+
workflow_dispatch:
permissions:
# All other permissions are set to none by default
diff --git a/.github/workflows/ci-arm.yml b/.github/workflows/ci-arm.yml
index c488e79b5d1..2cf141afe7c 100644
--- a/.github/workflows/ci-arm.yml
+++ b/.github/workflows/ci-arm.yml
@@ -27,6 +27,15 @@ name: Tests (ARM)
on: # yamllint disable-line rule:truthy
schedule:
- cron: '28 1,3,7,9,13,15,19,21 * * *'
+ push:
+ # Post-merge pushes to release-prep / providers branches run on both
+ # AMD and ARM (the matching block lives in the other wrapper too —
+ # `check-ci-workflows-in-sync` enforces they stay identical). `main` is
+ # intentionally NOT in this list: main pushes stay AMD-only via
+ # `ci-amd.yml`; ARM main coverage is the cron-driven canary above.
+ branches:
+ - v[0-9]+-[0-9]+-test
+ - providers-[a-z]+-?[a-z]*/v[0-9]+-[0-9]+
workflow_dispatch:
permissions:
# All other permissions are set to none by default
diff --git a/README.md b/README.md
index 3ca3a418e22..edbb7d29594 100644
--- a/README.md
+++ b/README.md
@@ -31,7 +31,7 @@
| Version | Build Status
|
|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Main | [](https://github.com/apache/airflow/actions/workflows/ci-amd.yml)
[](https://github.com/apache/airflow/actions/workflows/ci-arm.yml)
|
-| 3.x | [](https://github.com/apache/airflow/actions/workflows/ci-amd.yml)
|
+| 3.x | [](https://github.com/apache/airflow/actions/workflows/ci-amd.yml)
[](https://github.com/apache/airflow/actions/workflows/ci-arm.yml)
|
diff --git a/generated/PYPI_README.md b/generated/PYPI_README.md
index c7eef450ef7..50448156341 100644
--- a/generated/PYPI_README.md
+++ b/generated/PYPI_README.md
@@ -33,7 +33,7 @@ PROJECT BY THE `generate-pypi-readme` PREK HOOK. YOUR CHANGES
HERE WILL BE AUTOM
| Version | Build Status
|
|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Main | [](https://github.com/apache/airflow/actions/workflows/ci-amd.yml)
[](https://github.com/apache/airflow/actions/workflows/ci-arm.yml)
|
-| 3.x | [](https://github.com/apache/airflow/actions/workflows/ci-amd.yml)
|
+| 3.x | [](https://github.com/apache/airflow/actions/workflows/ci-amd.yml)
[](https://github.com/apache/airflow/actions/workflows/ci-arm.yml)
|
diff --git a/scripts/ci/prek/check_ci_workflows_in_sync.py
b/scripts/ci/prek/check_ci_workflows_in_sync.py
index 1807f53b2d8..b64600cd165 100755
--- a/scripts/ci/prek/check_ci_workflows_in_sync.py
+++ b/scripts/ci/prek/check_ci_workflows_in_sync.py
@@ -27,9 +27,12 @@ Documented divergences:
1. Header intro comment (different prose explaining what each file is for)
2. Workflow ``name:`` — ``Tests (ARM)`` vs ``Tests (AMD)``
-3. Triggers — ARM = schedule + workflow_dispatch only; AMD = its own
- schedule (offset from ARM's cron) + pull_request + push (to release
- branches) + workflow_dispatch
+3. Triggers — ARM = its own schedule + push (to release-prep /
+ providers branches) + workflow_dispatch; AMD = its own schedule
+ (offset from ARM's cron) + the same push branches + pull_request +
+ workflow_dispatch. Both wrappers run on post-merge pushes to
+ stable / providers branches; only AMD runs on PRs (per-PR ARM
+ coverage stays cron-driven via the canary).
4. ``concurrency.group`` prefix — ``ci-arm-`` vs ``ci-amd-``
5. ``build-info`` outputs ``platform`` and ``runner-type`` — hardcoded per
architecture (and the surrounding comment naming the "ARM/AMD copy")
@@ -112,10 +115,6 @@ AMD_ONLY_BLOCK = """ schedule:
# offset by 30 min from ARM's `:28` slot in `ci-arm.yml` so the two
scheduled
# canaries don't compete for runners at exactly the same minute.
- cron: '58 1,7,13,19 * * *'
- push:
- branches:
- - v[0-9]+-[0-9]+-test
- - providers-[a-z]+-?[a-z]*/v[0-9]+-[0-9]+
pull_request:
branches:
- main
@@ -125,6 +124,7 @@ AMD_ONLY_BLOCK = """ schedule:
types: [opened, reopened, synchronize, ready_for_review]
"""
+
# The header comment block (between the `---` document marker and the
# `name:` line) is intentionally different between files — each describes
# what its own file is for. Collapse to a placeholder before diffing.