Skip to content

Split conformance CI into parallel server/client matrix - #5

Merged
iainmcgin merged 1 commit into
mainfrom
ci/split-conformance-matrix
Mar 17, 2026
Merged

iainmcgin merged 1 commit into
mainfrom
ci/split-conformance-matrix

Conversation

@iainmcgin

Copy link
Copy Markdown
Collaborator

Changes

  1. Drop apt-get install protobuf-compiler (14s). connectrpc-conformance uses checked-in generated code - no build.rs, no connectrpc-build in its dep tree, nothing invokes protoc.

  2. Matrix server/client so the suites run in parallel. Each entry also builds only its own binary via --bin.

Timings (from run 23173511743)

Step Serial Matrix
Setup + cache 9s 9s (each)
apt-get protoc 14s -
Build 50s 50s (each, per-bin may be less)
Server conformance 20s 20s (concurrent)
Client conformance 94s 94s (concurrent)
Post 6s 6s (each)
Wall-clock ~193s ~159s

The server suite finishes in the shadow of the client suite.

Post-merge follow-up

The two matrix entries will surface as separate checks: Conformance (server) and Conformance (client). Ruleset 13913375 currently requires Conformance; after merge, update its required_status_checks to replace that with the two new names (same GET/edit/PUT pattern as the case-sensitivity fix earlier).

Separate open question

The 50s build with a warm Swatinem cache is surprisingly slow - a full hit should be 5-10s. Worth investigating separately (cache key invalidation? something uncacheable in the build?) since that would help every job, not just conformance.

Two changes:

1. Drop `apt-get install protobuf-compiler` (14s). connectrpc-conformance
   has no build.rs and checked-in generated code; nothing in its dep tree
   invokes protoc. The only workspace crate that does is tests/streaming
   (via connectrpc-build), which -p connectrpc-conformance does not pull.

2. Matrix server/client so the suites run in parallel. The server suite
   (~20s, 1192 tests) finishes in the shadow of the client suite (~94s,
   2580 tests). Each matrix entry pays the build again, but only builds
   its own binary via --bin.

Timings from run 23173511743 (serial): 9s setup + 14s apt + 50s build +
20s server + 94s client + 6s post = 193s.

Projected matrix: max(9+build+20+6, 9+build+94+6) = ~159s. Drops to
lower if the per-bin --release build caches well.

The two matrix entries surface as separate required checks
(Conformance (server) and Conformance (client)), so ruleset 13913375
needs its required_status_checks updated after merge - replace
`Conformance` with the two new names.
@iainmcgin
iainmcgin requested a review from asacamano March 17, 2026 17:52
@iainmcgin
iainmcgin marked this pull request as ready for review March 17, 2026 17:53
@iainmcgin
iainmcgin merged commit 588ea85 into main Mar 17, 2026
10 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Mar 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants