This is an automated email from the ASF dual-hosted git repository.
jason810496 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 2dcfd7ccd2a Fix Java-SDK e2e test registration (#67993)
2dcfd7ccd2a is described below
commit 2dcfd7ccd2abc95d53f0c73a114c1b9309d29bb7
Author: Jason(Zhe-You) Liu <[email protected]>
AuthorDate: Fri Jun 5 21:50:58 2026 +0800
Fix Java-SDK e2e test registration (#67993)
* Fix Java-SDK e2e test registration
* Assert non-java change keeps java-sdk e2e tests disabled
Extend the go-sdk selective-check case to also assert
run-java-sdk-e2e-tests stays false, covering the negative path.
---
.github/workflows/additional-prod-image-tests.yml | 16 +++++++++++
.github/workflows/ci-amd.yml | 2 ++
.github/workflows/ci-arm.yml | 2 ++
.../src/airflow_breeze/utils/selective_checks.py | 13 +++++++++
dev/breeze/tests/test_selective_checks.py | 33 ++++++++++++++++++++--
5 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/additional-prod-image-tests.yml
b/.github/workflows/additional-prod-image-tests.yml
index 5138c0994ab..1d9908ee5ac 100644
--- a/.github/workflows/additional-prod-image-tests.yml
+++ b/.github/workflows/additional-prod-image-tests.yml
@@ -52,6 +52,10 @@ on: # yamllint disable-line rule:truthy
description: "Whether to run event driven e2e tests (true/false)"
required: true
type: string
+ run-java-sdk-e2e-tests:
+ description: "Whether to run Java SDK e2e tests (true/false)"
+ required: true
+ type: string
constraints-branch:
description: "Branch used to construct constraints URL from."
required: true
@@ -290,6 +294,18 @@ jobs:
e2e_test_mode: "event_driven"
if: inputs.canary-run == 'true' || inputs.run-event-driven-e2e-tests ==
'true'
+ test-e2e-integration-tests-java-sdk:
+ name: "Java SDK e2e tests with PROD image"
+ uses: ./.github/workflows/airflow-e2e-tests.yml
+ with:
+ workflow-name: "Java SDK e2e test"
+ runners: ${{ inputs.runners }}
+ platform: ${{ inputs.platform }}
+ default-python-version: "${{ inputs.default-python-version }}"
+ use-uv: ${{ inputs.use-uv }}
+ e2e_test_mode: "java_sdk"
+ if: inputs.canary-run == 'true' || inputs.run-java-sdk-e2e-tests == 'true'
+
test-ui-e2e-chromium:
name: "Chromium UI e2e tests with PROD image"
uses: ./.github/workflows/ui-e2e-tests.yml
diff --git a/.github/workflows/ci-amd.yml b/.github/workflows/ci-amd.yml
index 21eb17e8126..e31b98a0e39 100644
--- a/.github/workflows/ci-amd.yml
+++ b/.github/workflows/ci-amd.yml
@@ -140,6 +140,7 @@ jobs:
run-remote-logging-opensearch-e2e-tests: ${{
steps.selective-checks.outputs.run-remote-logging-opensearch-e2e-tests }}
run-remote-logging-s3-e2e-tests: ${{
steps.selective-checks.outputs.run-remote-logging-s3-e2e-tests }}
run-event-driven-e2e-tests: ${{
steps.selective-checks.outputs.run-event-driven-e2e-tests }}
+ run-java-sdk-e2e-tests: ${{
steps.selective-checks.outputs.run-java-sdk-e2e-tests }}
run-system-tests: ${{ steps.selective-checks.outputs.run-system-tests }}
run-task-sdk-tests: ${{
steps.selective-checks.outputs.run-task-sdk-tests }}
run-task-sdk-integration-tests: ${{
steps.selective-checks.outputs.run-task-sdk-integration-tests }}
@@ -878,6 +879,7 @@ jobs:
run-remote-logging-opensearch-e2e-tests: ${{
needs.build-info.outputs.run-remote-logging-opensearch-e2e-tests }}
run-remote-logging-s3-e2e-tests: ${{
needs.build-info.outputs.run-remote-logging-s3-e2e-tests }}
run-event-driven-e2e-tests: ${{
needs.build-info.outputs.run-event-driven-e2e-tests }}
+ run-java-sdk-e2e-tests: ${{
needs.build-info.outputs.run-java-sdk-e2e-tests }}
use-uv: ${{ needs.build-info.outputs.use-uv }}
run-ui-e2e-tests: ${{ needs.build-info.outputs.run-ui-e2e-tests }}
run-airflow-ctl-integration-tests: ${{
needs.build-info.outputs.run-airflow-ctl-integration-tests }}
diff --git a/.github/workflows/ci-arm.yml b/.github/workflows/ci-arm.yml
index 9250c092b8e..4704cb56e21 100644
--- a/.github/workflows/ci-arm.yml
+++ b/.github/workflows/ci-arm.yml
@@ -130,6 +130,7 @@ jobs:
run-remote-logging-opensearch-e2e-tests: ${{
steps.selective-checks.outputs.run-remote-logging-opensearch-e2e-tests }}
run-remote-logging-s3-e2e-tests: ${{
steps.selective-checks.outputs.run-remote-logging-s3-e2e-tests }}
run-event-driven-e2e-tests: ${{
steps.selective-checks.outputs.run-event-driven-e2e-tests }}
+ run-java-sdk-e2e-tests: ${{
steps.selective-checks.outputs.run-java-sdk-e2e-tests }}
run-system-tests: ${{ steps.selective-checks.outputs.run-system-tests }}
run-task-sdk-tests: ${{
steps.selective-checks.outputs.run-task-sdk-tests }}
run-task-sdk-integration-tests: ${{
steps.selective-checks.outputs.run-task-sdk-integration-tests }}
@@ -868,6 +869,7 @@ jobs:
run-remote-logging-opensearch-e2e-tests: ${{
needs.build-info.outputs.run-remote-logging-opensearch-e2e-tests }}
run-remote-logging-s3-e2e-tests: ${{
needs.build-info.outputs.run-remote-logging-s3-e2e-tests }}
run-event-driven-e2e-tests: ${{
needs.build-info.outputs.run-event-driven-e2e-tests }}
+ run-java-sdk-e2e-tests: ${{
needs.build-info.outputs.run-java-sdk-e2e-tests }}
use-uv: ${{ needs.build-info.outputs.use-uv }}
run-ui-e2e-tests: ${{ needs.build-info.outputs.run-ui-e2e-tests }}
run-airflow-ctl-integration-tests: ${{
needs.build-info.outputs.run-airflow-ctl-integration-tests }}
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
index 2c40be9364d..d7e931469ca 100644
--- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -125,6 +125,7 @@ class FileGroupForCi(Enum):
REMOTE_LOGGING_E2E_ELASTICSEARCH_FILES = auto()
REMOTE_LOGGING_E2E_OPENSEARCH_FILES = auto()
EVENT_DRIVEN_E2E_FILES = auto()
+ JAVA_SDK_E2E_FILES = auto()
ALL_PYPROJECT_TOML_FILES = auto()
ALL_PYTHON_FILES = auto()
ALL_SOURCE_FILES = auto()
@@ -214,6 +215,13 @@ CI_FILE_GROUP_MATCHES: HashableDict[FileGroupForCi] =
HashableDict(
r"^providers/apache/kafka/.*",
r"^providers/common/messaging/.*",
],
+ FileGroupForCi.JAVA_SDK_E2E_FILES: [
+ r"^java-sdk/.*",
+ r"^airflow-e2e-tests/tests/airflow_e2e_tests/java_sdk_tests/.*",
+ r"^airflow-e2e-tests/docker/java\.yml$",
+ r"^airflow-e2e-tests/docker/Dockerfile\.java$",
+ r"^task-sdk/src/airflow/sdk/coordinators/java/.*",
+ ],
FileGroupForCi.PYTHON_PRODUCTION_FILES: [
# Production Python source the runtime ships — excludes tests,
docs,
# dev tooling, and generated files within those trees. Used by
@@ -1032,6 +1040,10 @@ class SelectiveChecks:
def run_event_driven_e2e_tests(self) -> bool:
return self._should_be_run(FileGroupForCi.EVENT_DRIVEN_E2E_FILES)
+ @cached_property
+ def run_java_sdk_e2e_tests(self) -> bool:
+ return self._should_be_run(FileGroupForCi.JAVA_SDK_E2E_FILES)
+
@cached_property
def run_amazon_tests(self) -> bool:
if self.providers_test_types_list_as_strings_in_json == "[]":
@@ -1148,6 +1160,7 @@ class SelectiveChecks:
or self.run_remote_logging_elasticsearch_e2e_tests
or self.run_remote_logging_opensearch_e2e_tests
or self.run_event_driven_e2e_tests
+ or self.run_java_sdk_e2e_tests
or self.run_ui_e2e_tests
)
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index 6f6177be26d..57d01fe7917 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -1329,8 +1329,37 @@ def assert_outputs_are_printed(expected_outputs:
dict[str, str], stderr: str):
),
pytest.param(
("go-sdk/sdk/variable.go",),
- {"run-go-sdk-tests": "true"},
- id="Run go tests for go-sdk",
+ {
+ "run-go-sdk-tests": "true",
+ "run-java-sdk-e2e-tests": "false",
+ },
+ id="Run go tests for go-sdk and skip java e2e tests for non-java
change",
+ ),
+ pytest.param(
+ ("java-sdk/sdk/build.gradle.kts",),
+ {
+ "run-java-sdk-tests": "true",
+ "run-java-sdk-e2e-tests": "true",
+ "prod-image-build": "true",
+ },
+ id="Run java unit and e2e tests for java-sdk source change",
+ ),
+ pytest.param(
+ ("airflow-e2e-tests/docker/java.yml",),
+ {
+ "run-java-sdk-tests": "false",
+ "run-java-sdk-e2e-tests": "true",
+ "prod-image-build": "true",
+ },
+ id="Run java e2e tests when java compose override changes",
+ ),
+ pytest.param(
+ ("task-sdk/src/airflow/sdk/coordinators/java/coordinator.py",),
+ {
+ "run-java-sdk-e2e-tests": "true",
+ "prod-image-build": "true",
+ },
+ id="Run java e2e tests when JavaCoordinator changes",
),
(
pytest.param(