Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
bd9be97
Replace coordinator artifact roots with task_handler_bundle_name
jason810496 Sep 30, 2026
ace4b2e
Serve lang-SDK harness artifacts from Dag bundles
jason810496 Sep 30, 2026
4bfc181
Document artifact Dag bundles for language SDK coordinators
jason810496 Sep 30, 2026
b9cde7f
Tidy names and mocks in the artifact bundle tests
jason810496 Sep 30, 2026
23898f0
Say artifact Dag bundles are registered on every component
jason810496 Sep 30, 2026
8997a35
Drop em-dashes from the rewritten doc sentences
jason810496 Sep 30, 2026
8983f6d
Say the Dag processor needs the language SDK setup too
jason810496 Oct 1, 2026
c705540
Validate task_handler_bundle_name only for routed coordinators
jason810496 Oct 2, 2026
9d00ead
Add newsfragment for the removed coordinator artifact roots
jason810496 Oct 2, 2026
68f03d6
Mark ADR-0013 as accepted
jason810496 Oct 2, 2026
c174aa4
Add lang-SDK task handler binding tables
jason810496 Sep 30, 2026
6762729
Match ADR-0013 task handler table SQL to the migration
jason810496 Sep 30, 2026
dc15082
Keep the artifact path hash in sync on ORM updates
jason810496 Sep 30, 2026
ab8f025
Test that a referenced task handler artifact cannot be deleted
jason810496 Sep 30, 2026
5da25f7
Describe LangSDKTaskHandler as a stub task binding
jason810496 Sep 30, 2026
396cac2
Regenerate the task handler migration revision id
jason810496 Sep 30, 2026
61b2d76
Store the task handler binding mode beside its params
jason810496 Sep 30, 2026
fce1160
Add handler_binding to ADR-0013's task handler table SQL
jason810496 Sep 30, 2026
d18d0af
Make session keyword-only in the task handler model test helpers
jason810496 Oct 1, 2026
7b572ab
Cache an artifact's task handlers on its row, not on each binding
jason810496 Oct 1, 2026
0361303
Move the handler declarations to the artifact in ADR-0013's SQL
jason810496 Oct 1, 2026
2c96b48
Let a task handler artifact store no cache digest
jason810496 Oct 1, 2026
da3372e
Allow a NULL cache digest in ADR-0013's artifact table SQL
jason810496 Oct 1, 2026
db4f847
Move the Dag file processor's shared plumbing into a base class
jason810496 Sep 29, 2026
7e26f0d
Test closing a Dag file processor that has no parse log file
jason810496 Oct 1, 2026
4f4b3bd
Add task-handler parse messages and their parse-channel union
jason810496 Sep 30, 2026
7e0327c
Regenerate TS SDK supervisor types for task-handler messages
jason810496 Sep 30, 2026
2826ec4
Document the version rules for a new supervisor schema body
jason810496 Sep 30, 2026
a2b0c29
Add a binding mode to task-handler declarations
jason810496 Sep 30, 2026
f3601d6
Regenerate TS SDK supervisor types for the binding mode
jason810496 Sep 30, 2026
7160a10
Describe the task-handler binding mode in ADR-0012
jason810496 Sep 30, 2026
de96d42
Describe the binding-mode parse check in ADR-0011 and ADR-0013
jason810496 Sep 30, 2026
06386fb
Add a named_open binding for non-exhaustive task-handler params
jason810496 Sep 30, 2026
12b142d
Regenerate TS SDK supervisor types for the named_open binding
jason810496 Sep 30, 2026
2700115
Add the named_open binding to the Lang-SDK ADRs
jason810496 Sep 30, 2026
d33f904
Ask a task handler runtime for every handler it registers
jason810496 Oct 1, 2026
d86cead
Regenerate TS SDK supervisor types for the probe without dag_ids
jason810496 Oct 1, 2026
c9eaf68
Describe the all-handlers probe in ADR-0011 and ADR-0012
jason810496 Oct 1, 2026
1bd5650
Bind task handlers only by position or by name
jason810496 Oct 1, 2026
a4598c4
Regenerate TS SDK supervisor types for the two binding modes
jason810496 Oct 1, 2026
1d793f9
Regenerate Go SDK models for task-handler messages
jason810496 Oct 2, 2026
07b5199
Describe the two task handler binding modes in the ADRs
jason810496 Oct 1, 2026
32db985
Keep a nested supervised child's standard streams open
jason810496 Sep 30, 2026
1ac623c
Let a subprocess coordinator exec a task-handler parse runtime
jason810496 Oct 2, 2026
4cb786b
Probe a Lang-SDK artifact for its task handlers
jason810496 Oct 2, 2026
bf18577
Read a Lang-SDK runtime's frames without blocking the parse loop
jason810496 Oct 2, 2026
896cc6f
Kill what a Lang-SDK runtime leaves behind when it exits
jason810496 Oct 2, 2026
1b93217
Do not exec a Lang-SDK runtime whose parent has already exited
jason810496 Oct 2, 2026
b45c6ec
Clean up a Lang-SDK runtime parse whose start fails after the fork
jason810496 Oct 2, 2026
aeff5da
Go SDK: describe task handler params with JSON Schema
jason810496 Sep 30, 2026
4619601
Go SDK: answer TaskHandlerParseRequest with registered handlers
jason810496 Sep 30, 2026
fc06e07
Go SDK: clarify parse timeout and nested-null docs, test anyOf
jason810496 Sep 30, 2026
f3d8034
Go SDK: record integrity and cache digests in bundle metadata
jason810496 Sep 30, 2026
c440bf7
Let the Executable coordinator probe a bundle's task handlers
jason810496 Sep 30, 2026
eb19610
Read a Go bundle's stored cache digest without hashing it
jason810496 Sep 30, 2026
6cf833f
Document the task handler parse for Language SDK authors
jason810496 Sep 30, 2026
9ecf47d
Go SDK: take the bundle digests from the staged executable
jason810496 Sep 30, 2026
262ca91
Resolve the probed bundle path and tighten the digest docs
jason810496 Sep 30, 2026
f731a54
Move Go SDK comments back to the code they describe
jason810496 Oct 1, 2026
a9d24ba
Tidy names, mocks and cases in the Go probe and digest tests
jason810496 Oct 1, 2026
f479c8a
Go SDK: answer a task handler parse with every handler
jason810496 Oct 1, 2026
5155067
State that a task handler parse answer depends only on the artifact
jason810496 Oct 1, 2026
3d9eaf2
Go SDK: declare every lone struct handler as named
jason810496 Oct 1, 2026
ccecc81
Describe the two task handler bindings for Language SDK authors
jason810496 Oct 1, 2026
d210b17
TS SDK: answer TaskHandlerParseRequest from bundle.serve
jason810496 Sep 30, 2026
8ea0048
Let the Node coordinator probe a bundle's task handlers
jason810496 Sep 30, 2026
e12ad5c
TS SDK: name the task handler lookup like its siblings
jason810496 Sep 30, 2026
57d85ff
Skip the TS real probe when node cannot report a version
jason810496 Sep 30, 2026
6d00642
Patch the TS real probe test with decorators
jason810496 Oct 1, 2026
f8acbd2
TS SDK: answer a task handler parse with every handler
jason810496 Oct 1, 2026
6c3e3e3
TS SDK: declare task handlers without listing their params
jason810496 Oct 1, 2026
0d37b86
Java SDK: sync the vendored supervisor schema from the monorepo
jason810496 Sep 30, 2026
d253959
Java SDK: record handler parameters in generated task classes
jason810496 Sep 30, 2026
078264d
Java SDK: answer TaskHandlerParseRequest with registered handlers
jason810496 Sep 30, 2026
8d360b8
Java SDK: stamp a cache digest on the bundle JAR manifest
jason810496 Sep 30, 2026
e4adc58
Java SDK: register stub Dags' Java tasks as task handlers
jason810496 Sep 30, 2026
f72d37f
Let the Java coordinator probe a JAR's task handlers
jason810496 Sep 30, 2026
11fb996
Java SDK: list a value schema's enum constants in a stable order
jason810496 Sep 30, 2026
e4c081c
Java SDK: check the task handler reply against the supervisor schema
jason810496 Sep 30, 2026
238799e
Say why the Java coordinator rejects a JAR it cannot probe
jason810496 Sep 30, 2026
5826da2
Test the Java SDK schema sync hook's snapshot copy
jason810496 Oct 1, 2026
8f942ec
Tidy names and mocks in the Java probe test
jason810496 Oct 1, 2026
18958ab
Test the cache digest of classpath directories and non-zip files
jason810496 Oct 1, 2026
628e134
Java SDK: answer a task handler parse with every handler
jason810496 Oct 1, 2026
f599ee6
Java SDK: declare task handler params without required
jason810496 Oct 1, 2026
580f68a
Let the coordinator registry list its task-handler bundles
jason810496 Sep 30, 2026
657bdc5
Add known task-handler artifacts to the Dag parse request
jason810496 Sep 30, 2026
90cfe6a
Regenerate TS SDK supervisor types for known artifacts
jason810496 Sep 30, 2026
f858597
Sync the Java SDK supervisor schema for known artifacts
jason810496 Sep 30, 2026
703d64f
Regenerate Go SDK models for known artifacts
jason810496 Oct 2, 2026
27370d0
Send the Dag-parsing child its known task-handler artifacts
jason810496 Sep 30, 2026
f78db1c
Describe how known artifacts are scoped per Dag-parsing child
jason810496 Sep 30, 2026
411c209
Test that a Dag file gets only named bundles without a fallback
jason810496 Sep 30, 2026
00586db
Build the known-artifact test params without required
jason810496 Oct 1, 2026
0669c86
Carry task handler bindings and probed answers on the parse result
jason810496 Sep 30, 2026
a7df3be
Regenerate TS SDK supervisor types for task handler bindings
jason810496 Sep 30, 2026
fb12a76
Sync the Java SDK supervisor schema for task handler bindings
jason810496 Sep 30, 2026
c6c7007
Regenerate Go SDK models for task handler bindings
jason810496 Oct 2, 2026
1665a67
Record probed artifacts and reconcile task handler bindings
jason810496 Sep 30, 2026
f7fd2ba
Index task handler artifacts by last_probed_at
jason810496 Sep 30, 2026
b1fb803
Delete task handler artifacts no stub task references
jason810496 Sep 30, 2026
f2c1b9e
Describe the binding reconcile and artifact sweep in ADR-0013
jason810496 Sep 30, 2026
36e5a7a
Give the task handler race tests their own sessions
jason810496 Sep 30, 2026
3cccb23
Warn only about bindings of Dags missing from the parse result
jason810496 Sep 30, 2026
459da04
Align the artifact sweep with the other cleanup checks
jason810496 Sep 30, 2026
aa3f771
Build the binding and probed-artifact test params without required
jason810496 Oct 1, 2026
e48f1fb
Let a coordinator list the artifacts it can probe
jason810496 Oct 1, 2026
ff88238
List Go task handler bundles by their trailer
jason810496 Oct 1, 2026
908d19c
List Java task handler JARs by their cache digest
jason810496 Oct 1, 2026
9ce2ed7
Read a TS bundle's cache digest from its layout line
jason810496 Oct 1, 2026
d851bdf
Decide per candidate whether a parse must probe it
jason810496 Oct 1, 2026
d238a18
Describe the per-candidate fast path in ADR-0013
jason810496 Oct 1, 2026
bd1191b
List only .zip archives as packaged Dags
jason810496 Oct 1, 2026
ec470f5
Add a significant newsfragment for listing only .zip packaged Dags
jason810496 Oct 2, 2026
e1cacea
Check stub task arguments against task handler declarations
jason810496 Oct 2, 2026
a857663
Describe how a stub task is checked against its task handler
jason810496 Oct 2, 2026
a71effa
Let the coordinator registry name the coordinator a queue routes to
jason810496 Oct 2, 2026
41383de
Read a Dag bundle's team from the bundle configuration
jason810496 Oct 2, 2026
3c89e6c
Stop a task handler probe at the Dag file's deadline
jason810496 Oct 2, 2026
9f872b8
Resolve a Dag file's stub tasks to task handler artifacts
jason810496 Oct 2, 2026
79eafdf
Check stub tasks against task handlers when a Dag file is parsed
jason810496 Oct 2, 2026
5274edc
Check the example Dags against the example bundles
jason810496 Oct 2, 2026
5f17455
Give the Dag processor the e2e task handler artifacts and runtimes
jason810496 Oct 2, 2026
ce1f57c
Document what the Dag processor checks in a stub task
jason810496 Oct 2, 2026
8efe1ef
Describe the stub-task check and its failures in the ADRs
jason810496 Oct 2, 2026
c0f84c4
Add the task handler artifact to StartupDetails
jason810496 Oct 1, 2026
8cb04dd
Regenerate TS SDK supervisor types for the task handler artifact
jason810496 Oct 1, 2026
ed6341a
Sync the Java SDK supervisor schema for the task handler artifact
jason810496 Oct 1, 2026
94fcf88
Regenerate Go SDK models for the task handler artifact
jason810496 Oct 2, 2026
71b451f
Resolve a stub task's artifact bundle from its workload
jason810496 Oct 1, 2026
9f61393
Add the task handler artifact to the ExecuteTask workload
jason810496 Oct 1, 2026
0e9b942
Name the task handler artifact reference in ADR-0013
jason810496 Oct 1, 2026
c9032aa
Look up the artifact a stub task instance is bound to
jason810496 Oct 2, 2026
595ea57
Send each queued stub task the artifact it is bound to
jason810496 Oct 2, 2026
ff65ec4
Send the bound artifact from dag.test with an executor
jason810496 Oct 2, 2026
5a4e242
Document that the scheduler reads the [sdk] configuration
jason810496 Oct 2, 2026
94ca9b1
Describe the scheduler's task handler read in ADR-0013
jason810496 Oct 2, 2026
0d74f43
Skip dags reserialize in the Lang-SDK e2e modes
jason810496 Oct 2, 2026
d2b9683
Fail a task in its task log when its Lang-SDK artifact cannot be reso…
jason810496 Oct 2, 2026
0d7307f
Rename the task handler command hook for the task's use
jason810496 Oct 2, 2026
0965bd8
Probe a Java task handler JAR through main_class when it is set
jason810496 Oct 2, 2026
6b630ed
Run exactly the artifact a stub task is bound to
jason810496 Oct 2, 2026
0f076c4
Delete the execution-time artifact scan
jason810496 Oct 2, 2026
01545ae
Document running the bound artifact
jason810496 Oct 2, 2026
3c099d6
Describe resolving the artifact by path in the ADRs
jason810496 Oct 2, 2026
ef486ad
Go SDK: pack a bundle without running it
jason810496 Oct 2, 2026
5264f23
Go SDK: remove the bundle binary's --airflow-metadata flag
jason810496 Oct 2, 2026
389ba3a
TS SDK: record no task handlers in bundle metadata
jason810496 Oct 2, 2026
b852e57
Drop the Dag inventory from the bundle metadata schema and specs
jason810496 Oct 2, 2026
5999358
Document bundle metadata without a Dag inventory
jason810496 Oct 2, 2026
5bb8c5d
TS SDK: say a missing task handler fails the import of its Dag file
jason810496 Oct 2, 2026
216dc08
Describe the slimmed bundle metadata in ADR-0014
jason810496 Oct 2, 2026
fcd9a66
Run the e2e harness's Go commands through one helper
jason810496 Oct 3, 2026
0ecd5a4
Add a Go task handler bundle for the e2e checks
jason810496 Oct 3, 2026
459396a
Keep the Go e2e test bundle tidy and on the SDK's Go version
jason810496 Oct 3, 2026
ce09454
Deploy the Go test bundle in the go_sdk e2e mode
jason810496 Oct 3, 2026
476ce65
Wait until stub tasks are bound before Lang-SDK e2e tests run
jason810496 Oct 3, 2026
674881f
Check that each stub task is bound and each artifact probed once
jason810496 Oct 3, 2026
2c17a38
Check the stub task problems the Dag processor reports
jason810496 Oct 3, 2026
78031f3
Check that stub tasks run the artifact they are bound to
jason810496 Oct 3, 2026
c7e6554
Check that an unbound stub task fails with the reason in its log
jason810496 Oct 3, 2026
86979e7
Check that packing records no Dag inventory and runs nothing
jason810496 Oct 3, 2026
de93b0a
Run the real task handler probe tests in the Lang-SDK e2e jobs
jason810496 Oct 3, 2026
26cc363
Stop setting USER and HOME for the Go real probe tests
jason810496 Oct 3, 2026
f67f571
Run the Lang-SDK e2e jobs when the code they test changes
jason810496 Oct 3, 2026
9ba69ef
Describe the Lang-SDK e2e modes for contributors
jason810496 Oct 3, 2026
eee7d4f
Check import errors only in each mode's Lang-SDK Dag files
jason810496 Oct 3, 2026
a119973
Report the import error when the k8s lang-SDK Dag does not import
jason810496 Oct 3, 2026
370d59e
Run the k8s Java task pods on the image --java-image names
jason810496 Oct 3, 2026
94fe9e4
Read the k8s Java task handler JAR from its S3 bundle
jason810496 Oct 3, 2026
f40f82a
Test that a task without a task handler artifact fails with its reaso…
jason810496 Oct 3, 2026
9f861be
Stop setting USER for the k8s Go bundle build in a container
jason810496 Oct 3, 2026
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
41 changes: 26 additions & 15 deletions .agents/skills/airflow-java-sdk/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,11 @@ subclasses must only import from `org.apache.airflow.sdk`; any import of

## Bundle composition and coordinator discovery

A **bundle** is a directory of JAR files (typically `build/bundle/`) placed on the coordinator's
`jars_root`. The coordinator scans the directory at task-dispatch time to find:
A **bundle** is a directory of JAR files (typically `build/bundle/`) placed in the Dag bundle named
by the coordinator's `task_handler_bundle_name` (the task's own Dag bundle when unset). The Dag
processor lists the handler JARs in that Dag bundle and binds each stub task to the JAR that registers
its handler. At task-dispatch time the coordinator runs only the JAR the task was bound to (or, for a
Dag defined in Java, its own Dag file), and reads from it:

1. **`Main-Class`** (standard JAR manifest attribute) — the fully-qualified class name of the
entry point that the coordinator invokes with `java -classpath … <Main-Class> --comm … --logs …`.
Expand All @@ -65,16 +68,23 @@ A **bundle** is a directory of JAR files (typically `build/bundle/`) placed on t
`runtimeClasspath` and copies it into the shadow JAR manifest. In thin-JAR mode (`fatJar =
false`), the value stays in the `airflow-sdk` JAR deployed alongside the bundle JAR.

The Python coordinator (`JavaCoordinator`) scans every JAR under `jars_root` with
`_JarInfo.find()`, reads `META-INF/MANIFEST.MF` out of each ZIP, and collects `Main-Class` and
`Airflow-Supervisor-Schema-Version` from whichever JARs carry them. The resolved schema version
is then passed as the `schema_version` return value from `_build_execute_task_command`, which
the base `SubprocessCoordinator` uses to negotiate the supervisor wire protocol.
The Python coordinator (`JavaCoordinator`) reads `META-INF/MANIFEST.MF` out of that JAR in
`_build_task_handler_command`, and takes `Main-Class` and `Airflow-Supervisor-Schema-Version` from
it. A thin JAR that carries no schema version takes the first one found in the other JARs of the
Dag bundle, in sorted path order. The resolved schema version is returned from
`_build_task_handler_command`, and the base `SubprocessCoordinator` uses it to negotiate the
supervisor wire protocol. The Dag processor probes a JAR with the same command.

If `main_class` is set explicitly on the `JavaCoordinator` instance (via `[sdk] coordinators`
kwargs), the scan uses it as a filter; otherwise the first JAR with a `Main-Class` attribute
wins. Either way, `Airflow-Supervisor-Schema-Version` must be present in at least one JAR in
`jars_root` or startup fails.
kwargs), it runs instead of the manifest's `Main-Class`, for tasks and for the probe, so keep one
handler JAR per Dag bundle then. The Java candidate's cache digest then covers `main_class`, so
changing it makes the Dag processor probe again. Only a JAR whose manifest has `Airflow-Cache-Digest`
is a handler JAR: the Gradle plugin writes it, and a Maven build must set a value that changes on
every build (see java.rst). Either way, `Airflow-Supervisor-Schema-Version` must be present in
at least one JAR in the Dag bundle. Without it the Dag processor cannot probe the JAR, so the stub
Dag fails to import with the reason in its import error. A task fails before the JVM starts, with
the reason in its task log, only when its worker's JARs differ from the Dag processor's. Every JAR
in the Dag bundle goes on one classpath.

---

Expand Down Expand Up @@ -115,11 +125,12 @@ E2E_TEST_MODE=java_sdk uv run --project airflow-e2e-tests pytest \

## Updating the Python coordinator

`coordinator.py` extends `SubprocessCoordinator`. The only method subclasses must implement is
`_build_execute_task_command`, which returns `(argv, schema_version)`. Look at the existing
implementation for how `jars_root`, `java_executable`, `jvm_args`, and `main_class` are
assembled into the command. Do not reach into the JVM process from Python beyond what this
method provides.
`coordinator.py` extends `SubprocessCoordinator`. The methods subclasses implement are
`_read_task_handler_candidate`, which tells the coordinator's artifacts apart from the other files
of a Dag bundle, and `_build_task_handler_command`, which returns `(argv, schema_version)` for the
artifact at a path, for the probe and for a task alike. Look at the existing implementation for how
the Dag bundle's JARs, `java_executable`, `jvm_args`, and `main_class` are assembled into the
command. Do not reach into the JVM process from Python beyond what this method provides.

---

Expand Down
3 changes: 2 additions & 1 deletion .agents/skills/airflow-new-sdk/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ Does the runtime compile to a self-contained native executable?
NO →
Does it start via a single shell command (node, ruby, dotnet, …)?
YES → Subclass SubprocessCoordinator.
Implement _build_execute_task_command only (see 30_new_language_sdk.rst).
Implement _build_task_handler_command and _read_task_handler_candidate
(see 30_new_language_sdk.rst).
NO →
Subclass BaseCoordinator and implement execute_task from scratch.
(Rare: gRPC daemons, shared memory, persistent processes.)
Expand Down
16 changes: 15 additions & 1 deletion .github/workflows/airflow-e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ jobs:
path: |
~/.cache/go-build
~/go/pkg/mod
key: e2e-go-sdk-go-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go-sdk/go.mod', 'go-sdk/go.sum') }} # yamllint disable-line rule:line-length
key: e2e-go-sdk-go-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go-sdk/go.mod', 'go-sdk/go.sum', 'airflow-e2e-tests/go-test-bundle/go.sum') }} # yamllint disable-line rule:line-length
restore-keys: |
e2e-go-sdk-go-v1-${{ runner.os }}-${{ runner.arch }}-
- name: "Setup pnpm for the TypeScript SDK build"
Expand All @@ -192,6 +192,20 @@ jobs:
DOCKER_IMAGE: "${{ inputs.docker-image-tag }}"
E2E_TEST_MODE: "${{ inputs.e2e_test_mode }}"
LANG_SDK_NATIVE_TOOLCHAIN: "${{ (inputs.e2e_test_mode == 'java_sdk' || inputs.e2e_test_mode == 'go_sdk' || inputs.e2e_test_mode == 'ts_sdk') && 'true' || 'false' }}" # yamllint disable-line rule:line-length
# The Dag processor's probe of a real artifact has unit tests of its own that pack and probe the example
# of one Lang SDK. They need that SDK's toolchain, which is set up above for its mode, so they run here
# instead of in the core test jobs, and a mode that lost its toolchain fails them rather than skipping.
- name: "Probe the real ${{ inputs.e2e_test_mode }} task handler artifacts"
if: >-
(success() || failure())
&& contains(fromJSON('["go_sdk", "ts_sdk", "java_sdk"]'), inputs.e2e_test_mode)
run: >
uv run --frozen --project airflow-core --with-editable shared/secrets_masker
pytest "airflow-core/tests/unit/dag_processing/test_task_handler_processor_${LANG_SDK}.py"
--color=yes -v -rs
env:
AIRFLOW_LANG_SDK_REAL_PROBE_TESTS: "1"
LANG_SDK: "${{ inputs.e2e_test_mode == 'go_sdk' && 'go' || inputs.e2e_test_mode == 'ts_sdk' && 'ts' || 'java' }}" # yamllint disable-line rule:line-length
- name: "Save Java SDK Gradle dependency cache"
# Saved even when the e2e tests fail: the Gradle warm-up is independent of
# test outcome, and actions/cache's post step would drop it on every red run.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/k8s-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ jobs:
# them as workers under KubernetesExecutor. It is executor/naming/version-independent, so instead of
# bolting it onto all six ``KubernetesExecutor``/``use-standard-naming == false`` system-test jobs above
# (which ran it redundantly and added ~6 minutes each), it runs once here on a single default combo and
# executes only the lang-SDK test (``-k test_lang_sdk_combined_dag_succeeds``) - not the full suite.
# executes only the lang-SDK tests (``-k TestLangSdkCoordinatorExecutor``) - not the full suite.
tests-kubernetes-lang-sdk:
timeout-minutes: 60
name: "K8S Lang-SDK:${{ inputs.lang-sdk-kubernetes-combo }}"
Expand Down Expand Up @@ -221,7 +221,7 @@ jobs:
- name: "Run lang-SDK K8S test ${{ inputs.lang-sdk-kubernetes-combo }}"
run: >-
breeze k8s run-complete-tests --no-copy-local-sources
-- -k test_lang_sdk_combined_dag_succeeds
-- -k TestLangSdkCoordinatorExecutor
env:
EXECUTOR: "KubernetesExecutor"
USE_STANDARD_NAMING: "false"
Expand Down
12 changes: 7 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,7 @@ repos:
(?x)
^go-sdk/go\.mod$|
^kubernetes-tests/lang_sdk/go_example/go\.mod$|
^airflow-e2e-tests/go-test-bundle/go\.mod$|
^\.github/workflows/ci-(arm|amd)\.yml$|
^airflow-e2e-tests/tests/airflow_e2e_tests/constants\.py$|
^dev/breeze/src/airflow_breeze/commands/kubernetes_commands\.py$|
Expand All @@ -412,20 +413,21 @@ repos:
pass_filenames: false
require_serial: true
- id: check-go-example-mod-tidy
name: Check lang-SDK Go example module is tidy against the Go SDK
name: Check lang-SDK Go modules are tidy against the Go SDK
entry: ./scripts/ci/prek/check_go_example_mod_tidy.py
# golang so prek provisions the toolchain the check needs: static checks run on a
# runner whose preinstalled toolchains are wiped to free disk space, and the SDK's
# own `go mod tidy` hook gets its Go the same way.
language: golang
# The example module keeps its own copy of the SDK's indirect requirements
# (it resolves the SDK through a `replace`), so a dependency moving in
# go-sdk/go.mod leaves it stale. Watching both modules' manifests is enough:
# The example modules keep their own copy of the SDK's indirect requirements
# (they resolve the SDK through a `replace`), so a dependency moving in
# go-sdk/go.mod leaves them stale. Watching all the manifests is enough:
# any new requirement in the SDK necessarily lands in go-sdk/go.mod first.
files: >
(?x)
^go-sdk/go\.(mod|sum)$|
^kubernetes-tests/lang_sdk/go_example/go\.(mod|sum)$
^kubernetes-tests/lang_sdk/go_example/go\.(mod|sum)$|
^airflow-e2e-tests/go-test-bundle/go\.(mod|sum)$
pass_filenames: false
require_serial: true
- id: check-partition-mapper-defaults-in-sync
Expand Down
3 changes: 2 additions & 1 deletion .rat-excludes
Original file line number Diff line number Diff line change
Expand Up @@ -328,8 +328,9 @@ www-hash.txt
# Vendored-in code
/src/airflow/providers/google/_vendor/*

# TypeScript bundle golden fixture: its bytes are digest-pinned, so no license header can be added
# TypeScript bundle golden fixtures: their bytes are digest-pinned, so no license header can be added
/ts-sdk/tests/cli/fixtures/bundle-v1.min.mjs
/ts-sdk/tests/cli/fixtures/bundle-v1-with-task-handlers.min.mjs

# Java SDK build outputs
/java-sdk/bin/*
Expand Down
Loading