Skip to content

ci: split the release test gate into Java and Rust jobs - #469

Open
tinder-maxwellelliott wants to merge 1 commit into
Tinder:masterfrom
maxwellE:claude/java-rust-testing-separation-9n7f4m
Open

ci: split the release test gate into Java and Rust jobs#469
tinder-maxwellelliott wants to merge 1 commit into
Tinder:masterfrom
maxwellE:claude/java-rust-testing-separation-9n7f4m

Conversation

@tinder-maxwellelliott

Copy link
Copy Markdown
Collaborator

The release ran everything through one bazel test //... inside the reusable workflow's build job, so the Kotlin and Rust suites shared a runner and a fate: whichever failed first ended the run, and the other suite's verdict was never produced. v44.0.0 lost the whole release to "//tests:e2e_test TIMEOUT in 3600.0s" on that single job.

Move the two language suites into java-tests (//cli/...) and rust-tests (//src/..., //tests/..., //tools/coverage/... and the two Rust lint gates). They run concurrently, each on its own runner with its own 6h GitHub job limit, and both gate the reusable workflow through needs -- so a release still requires both to be green, but a failure in one no longer suppresses the other's results.

The Rust job names its packages recursively instead of going through the hand-maintained //:rust_tests suite, so a new test under //src or //tests is in the release gate whether or not it is added to that suite.

What is left for the reusable workflow's build job is the Python and Go release tooling (//tools:all, //tools/go/...), which is fast enough not to warrant a third runner. The three commands together still cover every test in //...; the header comment records that invariant.

The release ran everything through one `bazel test //...` inside the
reusable workflow's build job, so the Kotlin and Rust suites shared a
runner and a fate: whichever failed first ended the run, and the other
suite's verdict was never produced. v44.0.0 lost the whole release to
"//tests:e2e_test TIMEOUT in 3600.0s" on that single job.

Move the two language suites into `java-tests` (//cli/...) and
`rust-tests` (//src/..., //tests/..., //tools/coverage/... and the two
Rust lint gates). They run concurrently, each on its own runner with its
own 6h GitHub job limit, and both gate the reusable workflow through
`needs` -- so a release still requires both to be green, but a failure in
one no longer suppresses the other's results.

The Rust job names its packages recursively instead of going through the
hand-maintained //:rust_tests suite, so a new test under //src or //tests
is in the release gate whether or not it is added to that suite.

What is left for the reusable workflow's build job is the Python and Go
release tooling (//tools:all, //tools/go/...), which is fast enough not
to warrant a third runner. The three commands together still cover every
test in //...; the header comment records that invariant.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UCA8NTE34CAFHATYM6nU3a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants