This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new 647c06ea6a9 Fix runner type assignment in selective checks (#57254)
(#57258)
647c06ea6a9 is described below
commit 647c06ea6a9d834fa3b95a2d88cc85df48c44f16
Author: GPK <[email protected]>
AuthorDate: Sat Oct 25 20:09:19 2025 +0100
Fix runner type assignment in selective checks (#57254) (#57258)
* Fix runner type assignment in selective checks
* Update notification workflow
---
.github/workflows/ci-notification.yml | 4 +-
dev/breeze/src/airflow_breeze/global_constants.py | 7 ++-
.../src/airflow_breeze/utils/selective_checks.py | 8 +--
dev/breeze/tests/test_selective_checks.py | 68 ++++++++++++++++++++++
4 files changed, 77 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/ci-notification.yml
b/.github/workflows/ci-notification.yml
index 60c2476c2dd..d44c2d2706d 100644
--- a/.github/workflows/ci-notification.yml
+++ b/.github/workflows/ci-notification.yml
@@ -36,8 +36,8 @@ jobs:
workflow-status:
strategy:
matrix:
- branch: ["v3-0-test"]
- workflow-id: ["ci-amd.yml", "ci-arm.yml"]
+ branch: ["v3-1-test"]
+ workflow-id: ["ci-amd-arm.yml"]
runs-on: ubuntu-latest
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py
b/dev/breeze/src/airflow_breeze/global_constants.py
index 49650629678..1f2b6e42728 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -40,9 +40,10 @@ from airflow_breeze.utils.path_utils import (
PUBLIC_AMD_RUNNERS = '["ubuntu-22.04"]'
PUBLIC_ARM_RUNNERS = '["ubuntu-22.04-arm"]'
-RUNNERS_TYPE_MAPPING = {
- "ubuntu-22.04": '["ubuntu-22.04"]',
- "ubuntu-22.04-arm": '["ubuntu-22.04-arm"]',
+# The runner type cross-mapping is intentional — if the previous scheduled
build used AMD, the current scheduled build should run with ARM.
+RUNNERS_TYPE_CROSS_MAPPING = {
+ "ubuntu-22.04": '["ubuntu-22.04-arm"]',
+ "ubuntu-22.04-arm": '["ubuntu-22.04"]',
}
ANSWER = ""
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
index c0ecd2a119d..f880e8e8c14 100644
--- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -48,7 +48,7 @@ from airflow_breeze.global_constants import (
PROVIDERS_COMPATIBILITY_TESTS_MATRIX,
PUBLIC_AMD_RUNNERS,
PUBLIC_ARM_RUNNERS,
- RUNNERS_TYPE_MAPPING,
+ RUNNERS_TYPE_CROSS_MAPPING,
TESTABLE_CORE_INTEGRATIONS,
TESTABLE_PROVIDERS_INTEGRATIONS,
GithubEvents,
@@ -1318,7 +1318,6 @@ class SelectiveChecks:
if response.status_code != 200:
get_console().print(f"[red]Error while listing workflow runs
error: {response.json()}.\n")
return None
- get_console().print(f"[blue]Response received for workflow run
{response.json()}.\n")
runs = response.json().get("workflow_runs", [])
if not runs:
get_console().print(
@@ -1344,9 +1343,8 @@ class SelectiveChecks:
if self._github_event in [GithubEvents.SCHEDULE, GithubEvents.PUSH]:
branch = self._github_context_dict.get("ref_name", "main")
label =
self.get_job_label(event_type=str(self._github_event.value), branch=branch)
- if not label:
- return PUBLIC_AMD_RUNNERS
- return RUNNERS_TYPE_MAPPING[label]
+
+ return RUNNERS_TYPE_CROSS_MAPPING[label] if label else
PUBLIC_AMD_RUNNERS
return PUBLIC_AMD_RUNNERS
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index 98d2dbdc68a..a44d2548e84 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -19,6 +19,7 @@ from __future__ import annotations
import json
import re
from typing import Any
+from unittest.mock import Mock, patch
import pytest
from rich.console import Console
@@ -30,6 +31,7 @@ from airflow_breeze.global_constants import (
DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
NUMBER_OF_LOW_DEP_SLICES,
PROVIDERS_COMPATIBILITY_TESTS_MATRIX,
+ PUBLIC_AMD_RUNNERS,
GithubEvents,
)
from airflow_breeze.utils.functools_cache import clearable_cache
@@ -2457,3 +2459,69 @@ def
test_ui_english_translation_changed_allowed_with_label():
default_branch="main",
)
assert selective_checks.ui_english_translation_changed is True
+
+
+@patch("requests.get")
[email protected]("os.environ", {"GITHUB_TOKEN": "test_token"})
+def test_get_job_label(mock_get):
+ selective_checks = SelectiveChecks(
+ files=(),
+ github_event=GithubEvents.PULL_REQUEST,
+ github_repository="apache/airflow",
+ github_context_dict={},
+ )
+
+ workflow_response = Mock()
+ workflow_response.status_code = 200
+ workflow_response.json.return_value = {"workflow_runs": [{"jobs_url":
"https://api.github.com/jobs/123"}]}
+
+ jobs_response = Mock()
+ jobs_response.json.return_value = {
+ "jobs": [
+ {"name": "Basic tests (ubuntu-22.04)", "labels": ["ubuntu-22.04"]},
+ {"name": "Other job", "labels": ["ubuntu-22.04"]},
+ ]
+ }
+
+ mock_get.side_effect = [workflow_response, jobs_response]
+
+ result = selective_checks.get_job_label("push", "main")
+
+ assert result == "ubuntu-22.04"
+
+
+def test_runner_type_pr():
+ selective_checks = SelectiveChecks(github_event=GithubEvents.PULL_REQUEST)
+
+ result = selective_checks.runner_type
+
+ assert result == PUBLIC_AMD_RUNNERS
+
+
+@patch("requests.get")
[email protected]("os.environ", {"GITHUB_TOKEN": "test_token"})
+def test_runner_type_schedule(mock_get):
+ selective_checks = SelectiveChecks(
+ files=(),
+ github_event=GithubEvents.SCHEDULE,
+ github_repository="apache/airflow",
+ github_context_dict={},
+ )
+
+ workflow_response = Mock()
+ workflow_response.status_code = 200
+ workflow_response.json.return_value = {"workflow_runs": [{"jobs_url":
"https://api.github.com/jobs/123"}]}
+
+ jobs_response = Mock()
+ jobs_response.json.return_value = {
+ "jobs": [
+ {"name": "Basic tests (ubuntu-22.04)", "labels": ["ubuntu-22.04"]},
+ {"name": "Other job", "labels": ["ubuntu-22.04"]},
+ ]
+ }
+
+ mock_get.side_effect = [workflow_response, jobs_response]
+
+ result = selective_checks.runner_type
+
+ assert result == '["ubuntu-22.04-arm"]'