Add CI, E2E Tests, and Pre-commit Hooks for Java SDK#65959
Draft
jason810496 wants to merge 6 commits intoapache:mainfrom
Draft
Add CI, E2E Tests, and Pre-commit Hooks for Java SDK#65959jason810496 wants to merge 6 commits intoapache:mainfrom
jason810496 wants to merge 6 commits intoapache:mainfrom
Conversation
This was referenced Apr 27, 2026
Draft
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.
Add CI, E2E Tests, and Pre-commit Hooks for Java SDK
Why
The Java SDK and Language Coordinator Layer (PRs 1 and 2) introduce cross-language serialization and a new execution path. Without CI coverage, regressions in the serialization contract or the end-to-end execution flow would go undetected.
What
E2E Tests (
airflow-e2e-tests/)java-sdk.ymlDocker Compose overlay that provisions the Java SDK, builds the example JAR bundle, and configures Airflow with the Java providertest_java_sdk.pywith end-to-end tests for both integration patterns:stub_dag.py):python_task_1→extract(Java) →transform(Java) →python_task_2— validates Python-Java XCom interop,getConnection,getVariable, and bidirectional data flowJavaExample.java):extract→transform→load— validates Java-only DAG parsing, task execution, and expected failure handling (loadthrowsRuntimeException)conftest.pyandconstants.pywith Java SDK fixtures, DAG IDs, and test utilitiesPre-commit Hook (
scripts/ci/prek/)check_java_serialization_compatibility.pypre-commit hook that:SerializationCompatibilityTestvia Gradle to produceserialized_java.jsonserialize_python.pyto produceserialized_python.jsoncompare.pyto deep-diff the two outputs.pre-commit-config.yamlBreeze Integration (
dev/breeze/,scripts/)--sdk javaflag tobreeze start-airflowfor one-command Java development setupjava_sdk_build.sh— builds the Java SDK and example JAR from source inside the Breeze containerjava_sdk_setup.sh— installs JDK, builds JARs, and configures DAG bundle pathsentrypoint_ci.shwith Java SDK environment initializationWas generative AI tooling used to co-author this PR?
Co-authored-by: Tzu-ping Chung uranusjr@gmail.com