Repository navigation
feat(ci-timing): measure CI wall, wait and long pole per run class (RIG-5488) - #2326
Merged
Merged
Conversation
…IG-5488) New tools/ci-timing bun project: a pure summarize() over ci.yml runs by class (pr, queue, merge_group, push, schedule, dispatch) and a gh api edge that prints per-class tables or JSON. Co-authored-by: Matt Wilkinson <matt@rigel.build>
…RIG-5488) rollup needs every work job, so it always finished last and took 100% of the long-pole share. A test pins that it waits on e2e in ci.yml. Co-authored-by: Matt Wilkinson <matt@rigel.build>
|
😎 This pull request was merged. |
|
Compass engineering docs preview: https://ci-rig-5488-ci-timing.compass-eng-docs.pages.dev Deployed from Changed pages: |
Map GitHub job conclusions such as timed_out onto the record's four instead of aborting the report, and cover the 1000-run cap guard and the conclusion mapping with fixture tests. Co-authored-by: Matt Wilkinson <matt@rigel.build>
Contributor
Author
|
Review loop on head
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
tools/ci-timing, the measurement tool from the CI PR-speed design (§ T1). It produces before/after tables for each of the remaining speed slices.core.tsis pure.classifysorts eachci.ymlrun into a class:pr,queue(apull_requestontrunk-merge/**),merge_group,push,scheduleordispatch.summarizegives each class: wall time; per-run max runner wait; per-job wait and duration quantiles; skip rate; long-pole share; runner minutes; and the UTC hours with a job wait over 120 s.rollupaggregator waits on every job, so it is left out of the long-pole count.index.tsreads runs and their jobs throughgh api --paginateand prints Markdown tables, or JSON with--json.bun tools/ci-timing/index.ts --since 2026-10-01 [--until …] [--json].28-day baseline (
prclass)Tests
core.test.tscovers every run class, the cancelled-run exclusion, skip rate and long-pole share, quantiles at n = 1 and n = 2, and the over-120 s hour buckets.rollupinci.ymlstill waits one2e. Removing the exclusion fails the test.index.test.tscovers the API edge: a listing cut short oftotal_countfails, a complete multi-page listing passes, atimed_outjob is read as a failure that ran, and an unknown conclusion fails.bun test: 12 pass.tsc --noEmitandbiome ciare clean.prlong-pole shares were e2e 44%, pgtest 28% and moon (nix) 20%.Design:
docs/designs/compass/ci-pr-speed.md§ T1 in RigelBuild/docs. Issue: RIG-5488.