Uh oh!
There was an error while loading. Please reload this page.
ci: add a manual disk-consumption stress workflow - #2408
Closed
aryanku-dev wants to merge 3 commits into
Closed
Conversation
A local 250-page snapshot build exhausted a laptop's disk and died with "Browser not connected" rather than a disk error, at roughly 30 MB of scratch per snapshot. Leaked Chromium profile dirs explained only about a third of it, so the rest is unaccounted for. This runs the same build on a stock ubuntu runner and samples df/du every 15s, producing the timeline the local run could not: where the bytes actually land, and whether a large Percy build survives ~14 GB of runner disk at all. Both the URL count and an optional runner-disk reclaim are inputs; reclaim defaults off so the first run measures a stock runner, which is the customer-relevant case. workflow_dispatch only — it consumes Percy quota (snapshots x browsers) and has no business running on push. Needs a PERCY_STRESS_TOKEN secret pointing at a throwaway project, deliberately not the nightly PERCY_REGRESSION_TOKEN. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
workflow_dispatch is not dispatchable until the file reaches the default branch (gh returned HTTP 404), so add a push trigger scoped to this branch — the same mechanism the regression job uses — to get results before merge. URL_COUNT falls back to 250 because `inputs` does not exist on push. Both should come back out once this merges and dispatch works. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
semgrep's github-actions-mutable-action-tag rule blocked the branch on three floating @v4 tags; every other workflow here pins to a full SHA, so match that convention using the SHAs already in use. Verified locally with semgrep 1.173.0 (the version CI runs): 0 findings. Also removes the push trigger now that it has served its purpose — run 33086755284 captured the pre-merge result. Dispatch-only from here, so this push does not start another 250-URL build. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 freeto 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.
Adds a
workflow_dispatch-only job that measures how much scratch disk a large Percy snapshot build consumes on a stock CI runner.Why
A local 250-page build exhausted a laptop and died with
Browser not connected— not a disk error, which is what makes this worth catching. Measured rate was ~30 MB of scratch per snapshot, so:A stock
ubuntu-latestrunner has ~14 GB free. So a large Percy build plausibly cannot complete on a standard runner — and the failure mode is a confusing browser error rather thanENOSPC. This workflow answers that directly.Leaked Chromium profile dirs (
$TMPDIR/percy-browser-*, ~88 MB each, never cleaned up) accounted for only about a third of the local consumption. The rest is unexplained, which is the main reason for the 15sdf/dusampler — it produces the timeline the local run could not.Design notes
free_diskdefaults to off, so the first run measures a stock runner. That is the customer-relevant number; enable it only to force a full-size run.PERCY_STRESS_TOKENsecret pointing at a throwaway project — deliberately notPERCY_REGRESSION_TOKEN, so stress builds never pollute the nightly regression baseline.env:rather than interpolated intorun:blocks.disk-timeline.csv+ the Percy log as an artifact.Merge note
workflow_dispatchworkflows are only dispatchable once they exist on the default branch, so this has to merge before it can run.Found while stress-testing the Node 20 CLI (#2386), but unrelated to that migration — the behaviour is not Node-version specific.
🤖 Generated with Claude Code