ci(bencher): enforce PR thresholds and grant checks: write#11883
Conversation
- Add `--start-point-clone-thresholds` to the non-main upload arms so PR/feature branches inherit thresholds configured on main; pair it with `--err` so a sample over the upper boundary fails the job. - Add `checks: write` to the three workflows that call `bencher run`. On main pushes (no `--ci-number`, not a PR event) Bencher falls back to creating a GitHub Check on the commit; without the permission it exits 1 with "Failed to create GitHub Check".
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📜 Recent review details⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
🔇 Additional comments (3)
📝 WalkthroughWalkthroughThree GitHub Actions benchmark workflows are enhanced with ChangesBenchmark workflow enhancements
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Integrated-Benchmark Report (Linux)Scenario: Isolated linker: fresh restore, cold cache + cold store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 2.3502830936600008,
"stddev": 0.10279984077340087,
"median": 2.3222429619600002,
"user": 2.81672868,
"system": 3.46245154,
"min": 2.2375798329600003,
"max": 2.5023931049600003,
"times": [
2.35498251396,
2.5023931049600003,
2.2895034099600005,
2.42350979896,
2.4890570699600003,
2.2720729099600003,
2.4263596299600003,
2.26724772896,
2.24012493696,
2.2375798329600003
]
},
{
"command": "pacquet@main",
"mean": 2.32187790036,
"stddev": 0.06474385030324165,
"median": 2.33550308646,
"user": 2.73499808,
"system": 3.4453162400000004,
"min": 2.22973320696,
"max": 2.41264889396,
"times": [
2.41264889396,
2.23445012696,
2.33499297096,
2.3410116329600004,
2.3991390689600003,
2.2745589619600004,
2.33601320196,
2.22973320696,
2.3746351739600002,
2.28159576496
]
},
{
"command": "pnpm",
"mean": 4.537254470360001,
"stddev": 0.07459892171558272,
"median": 4.54326139346,
"user": 7.65196818,
"system": 4.002413839999999,
"min": 4.4372579089599995,
"max": 4.65468278096,
"times": [
4.65468278096,
4.59426766196,
4.51839921496,
4.5984458759599995,
4.4372579089599995,
4.50407990096,
4.568123571959999,
4.44252524696,
4.58952553596,
4.46523700496
]
}
]
}Scenario: Isolated linker: fresh restore, hot cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 0.6708084764400001,
"stddev": 0.047240236745938545,
"median": 0.66072281024,
"user": 0.37954557999999994,
"system": 1.43517426,
"min": 0.63758168024,
"max": 0.80246104524,
"times": [
0.80246104524,
0.65856663124,
0.66187004524,
0.66215016824,
0.64658823624,
0.66977004224,
0.65957557524,
0.66233284324,
0.6471884972399999,
0.63758168024
]
},
{
"command": "pacquet@main",
"mean": 0.6648497021399999,
"stddev": 0.02043169834858673,
"median": 0.65836854374,
"user": 0.37647668,
"system": 1.4398314600000002,
"min": 0.6389551072399999,
"max": 0.69737859524,
"times": [
0.68593009624,
0.6389551072399999,
0.69737859524,
0.6468575022399999,
0.65901990924,
0.65771717824,
0.69342408324,
0.66596846724,
0.65360194024,
0.64964414224
]
},
{
"command": "pnpm",
"mean": 2.43530926094,
"stddev": 0.1481373263485777,
"median": 2.41473290724,
"user": 2.9190334799999995,
"system": 2.19278166,
"min": 2.2703722862399998,
"max": 2.75374672424,
"times": [
2.3187324022399998,
2.2703722862399998,
2.28225344724,
2.75374672424,
2.4605422622399997,
2.35298852124,
2.5019534962399996,
2.36892355224,
2.50363245024,
2.5399474672399998
]
}
]
}Scenario: Isolated linker: fresh install, cold cache + cold store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 4.9810691868,
"stddev": 0.121280682407395,
"median": 4.9621373679000005,
"user": 6.77160982,
"system": 3.50315648,
"min": 4.8108650464,
"max": 5.2308265784,
"times": [
4.9211465104,
4.9691413284,
4.8108650464,
4.9712631984,
4.9250876744,
4.909152966400001,
4.9610340454,
5.148933829400001,
5.2308265784,
4.9632406904
]
},
{
"command": "pacquet@main",
"mean": 5.051945107400001,
"stddev": 0.20454059186307916,
"median": 5.0785759509,
"user": 6.808686019999999,
"system": 3.5192217799999996,
"min": 4.7519255404,
"max": 5.3894233194000005,
"times": [
5.3894233194000005,
5.1070102154,
5.0036677544,
5.068471183400001,
5.3129088354,
5.0886807184,
4.8634214264,
5.1211762354,
4.7519255404,
4.8127658454
]
},
{
"command": "pnpm",
"mean": 6.352407902400001,
"stddev": 0.15205407973003585,
"median": 6.362504315900001,
"user": 10.49427922,
"system": 4.390154379999999,
"min": 6.0421095224000005,
"max": 6.6169474554,
"times": [
6.3489738944,
6.206308331400001,
6.0421095224000005,
6.3760347374,
6.346234394400001,
6.4068275374,
6.3973043044,
6.3148436644000006,
6.4684951824,
6.6169474554
]
}
]
}Scenario: Isolated linker: fresh install, hot cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 4.040380751980001,
"stddev": 0.10956843588089388,
"median": 4.03451855718,
"user": 4.388032920000001,
"system": 2.2139571399999998,
"min": 3.84191133968,
"max": 4.21692350968,
"times": [
4.028736975679999,
4.21692350968,
4.05177583068,
3.9509969266800002,
4.02812827968,
4.15463901568,
3.95580159568,
3.84191133968,
4.04030013868,
4.134593907679999
]
},
{
"command": "pacquet@main",
"mean": 4.12069823848,
"stddev": 0.11819397151077456,
"median": 4.1203162961799995,
"user": 4.48911702,
"system": 2.22456244,
"min": 3.96288766968,
"max": 4.37951931868,
"times": [
4.08028023068,
4.37951931868,
4.13095970068,
3.96288766968,
4.170711992679999,
4.00918251568,
4.12580481568,
4.208768527679999,
4.02403983668,
4.114827776679999
]
},
{
"command": "pnpm",
"mean": 4.233272924979999,
"stddev": 0.1065494973898752,
"median": 4.20804441368,
"user": 5.18660462,
"system": 2.61768664,
"min": 4.154485870679999,
"max": 4.51251677268,
"times": [
4.27431497768,
4.26310997568,
4.20751348868,
4.154485870679999,
4.16655527868,
4.51251677268,
4.21559589768,
4.208575338679999,
4.15934210768,
4.17071954168
]
}
]
} |
|
| Branch | pr/11883 |
| Testbed | pacquet |
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the--ci-only-thresholdsflag.
Click to view all benchmark results
| Benchmark | Latency | milliseconds (ms) |
|---|---|---|
| isolated-linker.fresh-install.cold-cache.cold-store | 📈 view plot | 4,981.07 ms |
| isolated-linker.fresh-install.hot-cache.hot-store | 📈 view plot | 4,040.38 ms |
| isolated-linker.fresh-restore.cold-cache.cold-store | 📈 view plot | 2,350.28 ms |
| isolated-linker.fresh-restore.hot-cache.hot-store | 📈 view plot | 670.81 ms |
Summary
--start-point-clone-thresholdsto the non-main upload arms inbenchmark.yml,pacquet-integrated-benchmark.yml, andpacquet-integrated-benchmark-comment.yml, so PR / feature-branch records inherit thresholds configured onmainin the Bencher UI. Pair it with--errso the workflow fails when a sample breaches the upper boundary — without this, a regression is recorded but the GitHub check stays green.checks: writeto all three workflows. Onpush: main(no--ci-number, not apull_requestevent) Bencher falls back to creating a GitHub Check on the commit; without the permission the upload step exits 1 withFailed to create GitHub Check, which is what's currently happening on main.Main-branch uploads still skip the threshold/
--errflags on purpose: by the time main fails, the regression has already landed.This branch was forked from
mainso its own benchmark runs against the threshold can be compared against themainbaseline once the workflows run.Test plan
Percentagethresholds in Bencher UI formain/pnpm/Latencyandmain/pacquet/Latency(upper boundary0.20, min samples10, max samples30).workflow_dispatchfrom this branch): confirm the nextpush: mainrun completes without theFailed to create GitHub Checkerror and shows a Check on the commit.BenchmarksandPacquet integrated benchmarkagainst this branch (or open a follow-up PR with an intentional perf regression) and confirm Bencher reports the upper-boundary breach and the job exits non-zero.Written by an agent (Claude Code, claude-opus-4-7).
Summary by CodeRabbit