[v3-2-test] Split ci-amd-arm.yml into ARM canary and AMD per-PR workflows (#66348)#66664
Merged
Merged
Conversation
…rkflows (apache#66348) * Split ci-amd-arm.yml into ci-arm.yml (canary) and ci-amd.yml (per-PR) wrappers Replaces the combined ci-amd-arm.yml workflow with two thin wrappers carrying the full pipeline inline: - ci-arm.yml: schedule (canary cron) + workflow_dispatch only; runs on linux/arm64. - ci-amd.yml: pull_request + push (to v3-N-test etc) + workflow_dispatch; runs on linux/amd64. No schedule for now; ARM keeps the canary slot. Each wrapper carries the full pipeline jobs identically except for platform / runner-type / triggers, so per-job UI grouping is preserved on the GitHub Actions page. The runtime cross-mapping in selective_checks.runner_type is left in place because is_disabled_integration still consumes it; the API lookup against the now-removed ci-amd-arm.yml falls back to AMD harmlessly. References to the old file name are updated in: README.md, dev/update_github_branch_config.py, ci-notification.yml, e2e-flaky-tests-report.yml, scripts/ci/analyze_e2e_flaky_tests.py, dev/README_AIRFLOW3_DEV.md, dev/README_RELEASE_AIRFLOW.md, generated/PYPI_README.md, update-constraints-on-push*.yml, release_dockerhub_image.yml. * Add prek hook that asserts ci-arm.yml and ci-amd.yml stay in sync The two CI workflow files are physical copies of each other (GH Actions has no cross-file YAML include) — they should differ only in: - header intro comment - workflow name (ARM vs AMD) - triggers (schedule vs pull_request+push) - concurrency group prefix - build-info platform / runner-type outputs - print-platform job name + echo Drift outside this set is a bug. The new `scripts/ci/prek/check_ci_workflows_in_sync.py` normalizes both files against the documented divergences (regex line rules + arch-only block removals) and asserts the rest matches byte-for-byte. Wired up as a local prek hook gated on either workflow file changing. Local UX: when run interactively, the script also diffs each file against `upstream/main` (falls back to `origin/main`, then `main`) and attributes the drift — "only ci-arm.yml changed since baseline; mirror to ci-amd.yml" with the exact diff to copy, OR "add to LINE_RULES / ARM_ONLY_BLOCK in this script if intentional". Falls back to the non-attribution view in CI / non-TTY runs. Set `FORCE_INTERACTIVE=1` to opt in from a non-TTY shell. (cherry picked from commit 8f93637)
2 tasks
vatsrahul1001
pushed a commit
that referenced
this pull request
May 20, 2026
…rkflows (#66348) (#66664) * Split ci-amd-arm.yml into ci-arm.yml (canary) and ci-amd.yml (per-PR) wrappers Replaces the combined ci-amd-arm.yml workflow with two thin wrappers carrying the full pipeline inline: - ci-arm.yml: schedule (canary cron) + workflow_dispatch only; runs on linux/arm64. - ci-amd.yml: pull_request + push (to v3-N-test etc) + workflow_dispatch; runs on linux/amd64. No schedule for now; ARM keeps the canary slot. Each wrapper carries the full pipeline jobs identically except for platform / runner-type / triggers, so per-job UI grouping is preserved on the GitHub Actions page. The runtime cross-mapping in selective_checks.runner_type is left in place because is_disabled_integration still consumes it; the API lookup against the now-removed ci-amd-arm.yml falls back to AMD harmlessly. References to the old file name are updated in: README.md, dev/update_github_branch_config.py, ci-notification.yml, e2e-flaky-tests-report.yml, scripts/ci/analyze_e2e_flaky_tests.py, dev/README_AIRFLOW3_DEV.md, dev/README_RELEASE_AIRFLOW.md, generated/PYPI_README.md, update-constraints-on-push*.yml, release_dockerhub_image.yml. * Add prek hook that asserts ci-arm.yml and ci-amd.yml stay in sync The two CI workflow files are physical copies of each other (GH Actions has no cross-file YAML include) — they should differ only in: - header intro comment - workflow name (ARM vs AMD) - triggers (schedule vs pull_request+push) - concurrency group prefix - build-info platform / runner-type outputs - print-platform job name + echo Drift outside this set is a bug. The new `scripts/ci/prek/check_ci_workflows_in_sync.py` normalizes both files against the documented divergences (regex line rules + arch-only block removals) and asserts the rest matches byte-for-byte. Wired up as a local prek hook gated on either workflow file changing. Local UX: when run interactively, the script also diffs each file against `upstream/main` (falls back to `origin/main`, then `main`) and attributes the drift — "only ci-arm.yml changed since baseline; mirror to ci-amd.yml" with the exact diff to copy, OR "add to LINE_RULES / ARM_ONLY_BLOCK in this script if intentional". Falls back to the non-attribution view in CI / non-TTY runs. Set `FORCE_INTERACTIVE=1` to opt in from a non-TTY shell. (cherry picked from commit 8f93637)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Backport of #66348 (merged 2026-05-07, commit `8f93637`) to `v3-2-test`.
Splits the combined `ci-amd-arm.yml` workflow into two thin wrappers (`ci-arm.yml` for the canary cron + `ci-amd.yml` for per-PR pushes) calling a reusable `_ci-pipeline.yml`. Adds the `check-ci-workflows-in-sync` prek hook to keep the two wrappers in lockstep. See the source PR for full motivation.
Conflicts resolved during cherry-pick
Three conflicts plus one post-resolve drift fix:
Test plan
🤖 Generated with Claude Code (Opus 4.7, 1M context)