Skip to content

CI: split the Linux test step across two jobs, since it is bound by the runner's four cores #253

Open

Description

@CaffeinatedCoder

Why

CI's Linux test leg ends every run, and it is bound by the runner's four cores (#251). Making rows parallel doesn't shorten it, because the SQL Server and PostgreSQL containers share those cores with the tests. On #252's first run, parallel EF Core rows moved the Linux test step from 9m 28s to 9m 17s while the rows' summed time more than doubled. The profile on #251 found no CPU to cut either: a CMTK0003 sweep row costs its own file, and the remaining part, the verifier, is not worth replacing with a matcher of our own.

What is left that keeps every test is more cores. In #252's first run (41191607858), the Linux leg's projects were:

Project Wall
CodoMetis.TypeKit.Analyzers.Tests 468 s
CodoMetis.TypeKit.EntityFrameworkCore.Tests 443 s
CodoMetis.TypeKit.AspNetCore.Tests 239 s
CodoMetis.TypeKit.Conventions.Tests 172 s
CodoMetis.TypeKit.Generators.Tests 97 s
the other eight 11-53 s each

Proposal

Done when

The Linux leg's job time is measured in this issue from three runs before and three after. Every test project runs in exactly one shard, shown by the conventions test failing on a seeded omission. The gate fails a run where a shard was skipped or cancelled. Expected, not measured: about 8-9 minutes for the Linux leg instead of about 12, since each shard repeats the roughly 2.5-minute checkout and build.

Activity

  1. added this to the 2.4.0 milestone on Oct 31, 2026
  2. added
    choreBuild, CI, tooling, packaging, refactoring with no behaviour change
    area/toolingThe repository's tools: prober, verdict, guard, docs-query, smoke test
    on Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/toolingThe repository's tools: prober, verdict, guard, docs-query, smoke testchoreBuild, CI, tooling, packaging, refactoring with no behaviour change

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions