This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-3-test by this push:
new 213649a3e57 [v3-3-test] Let area:e2e-tests label force the
airflow-e2e-tests suite (#69993) (#70108)
213649a3e57 is described below
commit 213649a3e57dab4387f891bbb00e3a814d5dba02
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Jul 20 00:36:13 2026 +0200
[v3-3-test] Let area:e2e-tests label force the airflow-e2e-tests suite
(#69993) (#70108)
* Let area:e2e-test label force Airflow E2E tests
Contributors validating changes whose impact selective-checks' file
heuristics miss otherwise have to request the full test matrix. A focused area
label lets them run the standard Airflow E2E suite without unrelated test jobs.
* Use the plural E2E tests area label
(cherry picked from commit e6d898c2390cdb676eed7e503816b4fb6f7e2529)
Co-authored-by: Jason(Zhe-You) Liu
<[email protected]>
---
.github/boring-cyborg.yml | 3 +++
dev/breeze/doc/ci/04_selective_checks.md | 1 +
dev/breeze/src/airflow_breeze/utils/selective_checks.py | 7 +++++++
dev/breeze/tests/test_selective_checks.py | 13 +++++++++++++
4 files changed, 24 insertions(+)
diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
index 0a9acdd51e2..249d81e0667 100644
--- a/.github/boring-cyborg.yml
+++ b/.github/boring-cyborg.yml
@@ -587,6 +587,9 @@ labelPRBasedOnFilePath:
area:docker-tests:
- docker-tests/**/*
+ area:e2e-tests:
+ - airflow-e2e-tests/**/*
+
area:kubernetes-tests:
- kubernetes-tests/**/*
diff --git a/dev/breeze/doc/ci/04_selective_checks.md
b/dev/breeze/doc/ci/04_selective_checks.md
index 1ac25c1eb57..f16d8773ff1 100644
--- a/dev/breeze/doc/ci/04_selective_checks.md
+++ b/dev/breeze/doc/ci/04_selective_checks.md
@@ -623,6 +623,7 @@ This table summarizes the labels you can use on PRs to
control the selective che
|----------------------------------|----------------------------------|-------------------------------------------------------------------------------------------|
| all versions | all-versions, *-versions-* | Run
tests for all python and k8s versions.
|
| allow suspended provider changes | allow-suspended-provider-changes | Allow
changes to suspended providers.
|
+| area:e2e-tests | prod-image-build | If
set, the Airflow E2E tests are run regardless of changed files (does not force
the full test matrix). |
| area:kubernetes-tests | run-kubernetes-tests | If
set, the Kubernetes tests job is run regardless of changed files (does not
force the full test matrix). |
| canary | is-canary-run | If
set, the PR run from apache/airflow repo behaves as `canary` run.
|
| debug ci resources | debug-ci-resources | If
set, then debugging resources is enabled during parallel tests and you can see
them. |
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
index 79606ab8262..8221da37764 100644
--- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -92,6 +92,7 @@ UPGRADE_TO_NEWER_DEPENDENCIES_LABEL = "upgrade to newer
dependencies"
USE_PUBLIC_RUNNERS_LABEL = "use public runners"
ALLOW_PROVIDER_DEPENDENCY_BUMP_LABEL = "allow provider dependency bump"
SKIP_COMMON_COMPAT_CHECK_LABEL = "skip common compat check"
+AREA_E2E_TESTS_LABEL = "area:e2e-tests"
AREA_KUBERNETES_TESTS_LABEL = "area:kubernetes-tests"
ALL_CI_SELECTIVE_TEST_TYPES = "API Always CLI Core Other Serialization"
@@ -1139,6 +1140,12 @@ class SelectiveChecks:
@cached_property
def prod_image_build(self) -> bool:
+ if AREA_E2E_TESTS_LABEL in self._pr_labels:
+ console_print(
+ "[warning]Building the PROD image to run Airflow E2E tests
because "
+ f"label '{AREA_E2E_TESTS_LABEL}' is in {self._pr_labels}[/]"
+ )
+ return True
return (
self.run_kubernetes_tests
or self.run_helm_tests
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index 9804873685f..4185fc1dc12 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -3572,6 +3572,19 @@ def
test_run_kubernetes_tests_forced_by_label_with_no_changed_files():
assert checks.full_tests_needed is False
[email protected]("files", [("INTHEWILD.md",), ()],
ids=["unrelated-file", "no-files"])
+def test_prod_image_build_forced_by_e2e_tests_label(files):
+ checks = SelectiveChecks(
+ files=files,
+ commit_ref=NEUTRAL_COMMIT,
+ github_event=GithubEvents.PULL_REQUEST,
+ default_branch="main",
+ pr_labels=("area:e2e-tests",),
+ )
+ assert checks.prod_image_build is True
+ assert checks.full_tests_needed is False
+
+
def test_filter_platform_excluded_test_types_handles_all_shapes():
"""Direct unit check of the in-place filter for the three Providers[...]
shapes."""
checks = SelectiveChecks(