Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 14 additions & 17 deletions .github/workflows/ci-amd-arm.yml → .github/workflows/ci-amd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,15 @@
# under the License.
#
---
name: Tests
# AMD CI workflow. Triggered on every PR and on push to release branches.
# Companion to `ci-arm.yml`, which runs the same pipeline on ARM as the
# scheduled canary. The two workflows are physical copies of each other
# (GitHub Actions has no cross-file YAML include), differing only in their
# trigger surface, the hardcoded `runner-type` / `platform` values in
# `build-info`'s outputs, and the architecture-specific print-platform job.
# Edit both files together when changing pipeline shape.
name: Tests (AMD)
on: # yamllint disable-line rule:truthy
schedule:
- cron: '28 1,3,7,9,13,15,19,21 * * *'
push:
branches:
- v[0-9]+-[0-9]+-test
Expand All @@ -43,7 +48,7 @@ env:
VERBOSE: "true"

concurrency:
group: ci-amd-arm-${{ github.event.pull_request.number || github.ref }}
group: ci-amd-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
Expand Down Expand Up @@ -90,7 +95,9 @@ jobs:
latest-versions-only: ${{ steps.selective-checks.outputs.latest-versions-only }}
mysql-exclude: ${{ steps.selective-checks.outputs.mysql-exclude }}
mysql-versions: ${{ steps.selective-checks.outputs.mysql-versions }}
platform: ${{ steps.selective-checks.outputs.platform }}
# platform / runner-type are hardcoded per workflow file (this is the
# AMD copy). The matching ARM copy lives in ci-arm.yml.
platform: "linux/amd64"
postgres-exclude: ${{ steps.selective-checks.outputs.postgres-exclude }}
postgres-versions: ${{ steps.selective-checks.outputs.postgres-versions }}
prod-image-build: ${{ steps.selective-checks.outputs.prod-image-build }}
Expand Down Expand Up @@ -120,7 +127,7 @@ jobs:
run-task-sdk-integration-tests: ${{ steps.selective-checks.outputs.run-task-sdk-integration-tests }}
run-breeze-integration-tests: ${{ steps.selective-checks.outputs.run-breeze-integration-tests }}
run-scripts-tests: ${{ steps.selective-checks.outputs.run-scripts-tests }}
runner-type: ${{ steps.selective-checks.outputs.runner-type }}
runner-type: '["ubuntu-22.04"]'
run-ui-tests: ${{ steps.selective-checks.outputs.run-ui-tests }}
run-ui-e2e-tests: ${{ steps.selective-checks.outputs.run-ui-e2e-tests }}
run-unit-tests: ${{ steps.selective-checks.outputs.run-unit-tests }}
Expand Down Expand Up @@ -198,20 +205,10 @@ jobs:
env:
PR_LABELS: ${{ steps.source-run-info.outputs.pr-labels }}

print-platform-arm:
name: "Platform: ARM"
needs: [build-info]
runs-on: ["ubuntu-22.04"]
if: needs.build-info.outputs.platform == 'linux/arm64'
steps:
- name: "Print architecture"
run: "echo '## Architecture: ARM' >> $GITHUB_STEP_SUMMARY"

print-platform-amd:
print-platform:
name: "Platform: AMD"
needs: [build-info]
runs-on: ["ubuntu-22.04"]
if: needs.build-info.outputs.platform == 'linux/amd64'
steps:
- name: "Print architecture"
run: "echo '## Architecture: AMD' >> $GITHUB_STEP_SUMMARY"
Expand Down
1,161 changes: 1,161 additions & 0 deletions .github/workflows/ci-arm.yml

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion .github/workflows/ci-notification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ jobs:
strategy:
matrix:
branch: ["v3-2-test"]
workflow-id: ["ci-amd-arm.yml"]
# Track AMD; ARM is the canary slot and is reported separately by
# `ci-arm.yml`'s notify-slack job on schedule events.
workflow-id: ["ci-amd.yml"]
runs-on: ubuntu-latest
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/e2e-flaky-tests-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MAX_RUNS: "10"
WORKFLOW_NAME: "ci-amd-arm.yml"
# E2E test runs come from the AMD workflow (every PR / push to main
# goes through it). The ARM canary is too sparse to drive flakiness
# analysis, so we keep the report tied to AMD.
WORKFLOW_NAME: "ci-amd.yml"
BRANCH: "main"
OUTPUT_FILE: "slack-message.json"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release_dockerhub_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
- name: "Install Breeze"
uses: ./.github/actions/breeze
- name: "Save github context to file"
# See ci-amd-arm.yml for the full rationale: avoids ARG_MAX on big PRs by writing the
# See ci-amd.yml for the full rationale: avoids ARG_MAX on big PRs by writing the
# github context to a file, and the single-quoted heredoc makes the zizmor
# template-injection finding a false positive (no bash expansion happens inside it).
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-constraints-on-push-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
uses: ./.github/actions/breeze
id: breeze
- name: "Save github context to file"
# See ci-amd-arm.yml for the full rationale: avoids ARG_MAX on big PRs by writing the
# See ci-amd.yml for the full rationale: avoids ARG_MAX on big PRs by writing the
# github context to a file, and the single-quoted heredoc makes the zizmor
# template-injection finding a false positive (no bash expansion happens inside it).
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-constraints-on-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
uses: ./.github/actions/breeze
id: breeze
- name: "Save github context to file"
# See ci-amd-arm.yml for the full rationale: avoids ARG_MAX on big PRs by writing the
# See ci-amd.yml for the full rationale: avoids ARG_MAX on big PRs by writing the
# github context to a file, and the single-quoted heredoc makes the zizmor
# template-injection finding a false positive (no bash expansion happens inside it).
shell: bash
Expand Down
7 changes: 7 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,13 @@ repos:
^pyproject\.toml$
pass_filenames: false
require_serial: true
- id: check-ci-workflows-in-sync
name: Check ci-arm.yml and ci-amd.yml stay in sync
entry: ./scripts/ci/prek/check_ci_workflows_in_sync.py
language: python
files: ^\.github/workflows/ci-(arm|amd)\.yml$
pass_filenames: false
require_serial: true
- id: sync-uv-min-version-markers
name: Sync `# sync-uv-min-version` markers with [tool.uv] required-version
entry: ./scripts/ci/prek/sync_uv_min_version_markers.py
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

| Version | Build Status |
|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Main | [![GitHub Build main](https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml/badge.svg)](https://github.com/apache/airflow/actions) |
| 3.x | [![GitHub Build 3.2](https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml/badge.svg?branch=v3-2-test)](https://github.com/apache/airflow/actions) |
| Main | [![GitHub Build main](https://github.com/apache/airflow/actions/workflows/ci-amd.yml/badge.svg)](https://github.com/apache/airflow/actions) |
| 3.x | [![GitHub Build 3.2](https://github.com/apache/airflow/actions/workflows/ci-amd.yml/badge.svg?branch=v3-2-test)](https://github.com/apache/airflow/actions) |
| 2.x | [![GitHub Build 2.11](https://github.com/apache/airflow/actions/workflows/ci.yml/badge.svg?branch=v2-11-test)](https://github.com/apache/airflow/actions) |


Expand Down
2 changes: 1 addition & 1 deletion dev/README_AIRFLOW3_DEV.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ PRs should **never** target `v3-2-stable` directly unless explicitly instructed
> likely need additional changes before GA. However, when using this shortcut, the release manager **must**
> verify that the `v3-X-test` push CI action ("Tests" workflow) has succeeded before cutting the RC. You can
> check this at:
> https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml?query=event%3Apush+branch%3Av3-2-test
> https://github.com/apache/airflow/actions/workflows/ci-amd.yml?query=event%3Apush+branch%3Av3-2-test
> (adjust the branch filter for the relevant `v3-X-test` branch).

## Developing for Airflow 3
Expand Down
2 changes: 1 addition & 1 deletion dev/README_RELEASE_AIRFLOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ still works but is no longer recommended.
> likely need additional changes before GA. However, when using this shortcut, the release manager **must**
> verify that the `v3-X-test` push CI action ("Tests" workflow) has succeeded before cutting the RC. You can
> check this at:
> https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml?query=event%3Apush+branch%3Av3-2-test
> https://github.com/apache/airflow/actions/workflows/ci-amd.yml?query=event%3Apush+branch%3Av3-2-test
> (adjust the branch filter for the relevant `v3-X-test` branch).

- When the PR is approved (or when using the shortcut above), install `dev/breeze` in a virtualenv:
Expand Down
6 changes: 6 additions & 0 deletions dev/breeze/src/airflow_breeze/utils/selective_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -1594,6 +1594,12 @@ def selected_providers_list_as_string(self) -> str | None:
def get_job_label(self, event_type: str, branch: str):
import requests # type: ignore[import-untyped]

# The main CI is now split into ci-arm.yml and ci-amd.yml; the old
# ci-amd-arm.yml file no longer exists. This lookup is dormant for the
# main pipeline (which hardcodes runner-type per wrapper) and only
# remains here for the `is_disabled_integration` code path that still
# reads `runner_type`. The API call against a missing workflow returns
# nothing and the caller falls back to PUBLIC_AMD_RUNNERS.
job_name = "Basic tests"
workflow_name = "ci-amd-arm.yml"
headers = {"Accept": "application/vnd.github.v3+json"}
Expand Down
4 changes: 2 additions & 2 deletions dev/update_github_branch_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,12 +303,12 @@ def update_readme_badge(new_branch: str, prev_branch: str, new_version: str, pre

old_badge = (
f"[![GitHub Build {prev_version}"
f"](https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml/badge.svg"
f"](https://github.com/apache/airflow/actions/workflows/ci-amd.yml/badge.svg"
f"?branch={prev_branch})](https://github.com/apache/airflow/actions)"
)
new_badge = (
f"[![GitHub Build {new_version}"
f"](https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml/badge.svg"
f"](https://github.com/apache/airflow/actions/workflows/ci-amd.yml/badge.svg"
f"?branch={new_branch})](https://github.com/apache/airflow/actions)"
)

Expand Down
4 changes: 2 additions & 2 deletions generated/PYPI_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ PROJECT BY THE `generate-pypi-readme` PREK HOOK. YOUR CHANGES HERE WILL BE AUTOM

| Version | Build Status |
|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Main | [![GitHub Build main](https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml/badge.svg)](https://github.com/apache/airflow/actions) |
| 3.x | [![GitHub Build 3.2](https://github.com/apache/airflow/actions/workflows/ci-amd-arm.yml/badge.svg?branch=v3-2-test)](https://github.com/apache/airflow/actions) |
| Main | [![GitHub Build main](https://github.com/apache/airflow/actions/workflows/ci-amd.yml/badge.svg)](https://github.com/apache/airflow/actions) |
| 3.x | [![GitHub Build 3.2](https://github.com/apache/airflow/actions/workflows/ci-amd.yml/badge.svg?branch=v3-2-test)](https://github.com/apache/airflow/actions) |
| 2.x | [![GitHub Build 2.11](https://github.com/apache/airflow/actions/workflows/ci.yml/badge.svg?branch=v2-11-test)](https://github.com/apache/airflow/actions) |


Expand Down
4 changes: 2 additions & 2 deletions scripts/ci/analyze_e2e_flaky_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

Environment variables (optional):
MAX_RUNS - Maximum number of workflow runs to analyze (default: 10)
WORKFLOW_NAME - Workflow file name to query (default: ci-amd-arm.yml)
WORKFLOW_NAME - Workflow file name to query (default: ci-amd.yml)
BRANCH - Branch to filter runs (default: main)
OUTPUT_FILE - Path for the Slack message output (default: slack-message.json)
GITHUB_OUTPUT - Path to GitHub Actions output file
Expand Down Expand Up @@ -525,7 +525,7 @@ def write_step_summary(
def main() -> None:
repo = os.environ.get("GITHUB_REPOSITORY", "apache/airflow")
max_runs = int(os.environ.get("MAX_RUNS", "10"))
workflow = os.environ.get("WORKFLOW_NAME", "ci-amd-arm.yml")
workflow = os.environ.get("WORKFLOW_NAME", "ci-amd.yml")
branch = os.environ.get("BRANCH", "main")
output_file = Path(os.environ.get("OUTPUT_FILE", "slack-message.json"))

Expand Down
Loading
Loading