Skip to content

fix(ci): split J5 CI so unit tests stop hitting the job timeout - #246

Merged
Jacksondr5 merged 1 commit into
j5/mainfrom
j5/ci-split-test-jobs
Sep 23, 2026
Merged

Jacksondr5 merged 1 commit into
j5/mainfrom
j5/ci-split-test-jobs

Conversation

@bryantderosier

Copy link
Copy Markdown
Collaborator

Problem

J5 CI ran format, lint, typecheck, and every package's tests serially in one job with a 20 minute timeout, and had crept right up to that line. The PR run for #242 was cancelled at 20m03s with every test green while its push twin passed at 19m19s. Recent runs on other branches all land between 19 and 20 minutes, so this was about to start failing for everyone. The server suite alone takes over eleven minutes because it runs files one at a time by design.

Fix

I split the workflow the way upstream ci.yml does:

  • checks runs format, lint, and typecheck.
  • test runs every package except the server, and keeps the libsecret install the desktop tests need.
  • test_server runs the server suite as three shards on separate runners. No two server files share a machine, so the isolation fileParallelism: false buys is preserved.
  • A gate job named Format, lint, typecheck, and unit tests depends on all of the above and fails on any failure, cancellation, or skip. The default-branch ruleset requires that exact check name, so I kept it rather than editing repo settings.

Wall clock should drop from about 20 minutes to about 7.

Verification

  • A local server shard (--shard 1/40) ran 12 of 450 files and passed, so the shard flag passes through vp run.
  • The non-server filter selects all 13 other packages and excludes the root and server; nine passed locally in full. The scripts and desktop packages only fail on my Apple Silicon machine for host reasons (an x64-only arch assertion and a missing local Electron binary) and both passed in the last CI run.
  • The workflow parses and passes vp fmt --check.

Written by Claude Fable 5.1 in Claude Code.

🤖 Generated with Claude Code

The single J5 CI job ran format, lint, typecheck, and every package's tests
serially and had crept up to its 20 minute timeout with all tests green; the
PR run for #242 was cancelled at 20m03s while its push twin passed at 19m19s.

Split the job the way upstream ci.yml does: a checks job for format, lint,
and typecheck, a test job for every package except the server, and three
server shards, since the server suite runs files one at a time and alone took
over eleven minutes. A gate job keeps the check name the default-branch
ruleset requires and fails when any split job fails, is cancelled, or is
skipped.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 effective changed lines (test files excluded in mixed PRs). labels Sep 22, 2026
@bryantderosier bryantderosier self-assigned this Sep 22, 2026
@Jacksondr5
Jacksondr5 merged commit 5c16372 into j5/main Sep 23, 2026
27 checks passed
@Jacksondr5
Jacksondr5 deleted the j5/ci-split-test-jobs branch September 23, 2026 02:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants