Skip to content

feat(ci): upload ci-profile binary size from main CI#14868

Draft
stormslowly wants to merge 1 commit into
mainfrom
feat/upload-ci-binary-size
Draft

feat(ci): upload ci-profile binary size from main CI#14868
stormslowly wants to merge 1 commit into
mainfrom
feat/upload-ci-binary-size

Conversation

@stormslowly

Copy link
Copy Markdown
Contributor

Why

The Binary Size Limit check reads its baseline from rspack-build.json on the benchmark repo's data branch. That file is only written at the very end of the ecosystem benchmark pipeline, which first has to build the release binding (fat LTO) and then run a 40-minute bench. For e8a7bce7 the data landed more than a day after the commit was pushed.

The number itself, however, is known much earlier: it is the stripped ci-profile binding, and ci.yml's build-linux produces exactly that artifact as part of normal main CI.

Verified this is the same measurement, not an approximation — downloading bindings-x86_64-unknown-linux-gnu from main CI and stripping it reproduces the published value on every commit checked:

commit stripped ci artifact published rspack-build.json
e8a7bce7 69,840,024 69,840,024
23812cfe 69,835,928 69,835,928
740a9b87 69,835,928 69,835,928

So the size can be published minutes after build-linux instead of hours-to-days after the benchmark.

What

  • New push-only job Upload Binary Size in ci.yml: reuses the build-linux artifact, strips it exactly as size-limit.yml does, and writes commits/<xx>/<rest>/ci-binary.json to the data branch via PERF_DATA_TOKEN (the token already used by the benchmark upload). The push retries on conflict, since the ecosystem benchmark writes to the same branch.
  • binary-limit-script.js now reads ci-binary.json first and falls back to rspack-build.json. Both carry the same measurement, so commits predating this job keep working unchanged.

The ecosystem benchmark keeps writing rspack-build.json as before; nothing is removed.

The last 30 main commits have been backfilled with ci-binary.json on the data branch separately.

@github-actions

Copy link
Copy Markdown
Contributor

📦 Binary Size-limit

Comparing b37d494 to chore(deps): update dependency @rslint/core to v0.7.0 (#14849) by renovate[bot]

🙈 Size remains the same at 66.60MB

@github-actions

Copy link
Copy Markdown
Contributor

Rsdoctor Bundle Diff Analysis

Found 5 projects in monorepo, 5 projects with changes.

📊 Quick Summary
Project Total Size Gzip Size Change Gzip Change
popular-libs 1.7 MB 552.1 KB - -
react-1k 823.1 KB 217.0 KB - -
react-10k 5.6 MB 1.3 MB - -
react-5k 2.7 MB 663.8 KB - -
ui-components 4.9 MB 1.4 MB - -
📋 Detailed Reports (Click to expand)

📁 popular-libs

Path: ../build-tools-performance/cases/popular-libs/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 1.7 MB - -
🗜️ Gzip Size 552.1 KB - -
📄 JavaScript 1.7 MB - -
🎨 CSS 0 B - -
🌐 HTML 289.0 B - -
📁 Other Assets 0 B - -

📁 react-1k

Path: ../build-tools-performance/cases/react-1k/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 823.1 KB - -
🗜️ Gzip Size 217.0 KB - -
📄 JavaScript 822.7 KB - -
🎨 CSS 0 B - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

📁 react-10k

Path: ../build-tools-performance/cases/react-10k/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 5.6 MB - -
🗜️ Gzip Size 1.3 MB - -
📄 JavaScript 5.6 MB - -
🎨 CSS 21.0 B - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

📁 react-5k

Path: ../build-tools-performance/cases/react-5k/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 2.7 MB - -
🗜️ Gzip Size 663.8 KB - -
📄 JavaScript 2.7 MB - -
🎨 CSS 21.0 B - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

📁 ui-components

Path: ../build-tools-performance/cases/ui-components/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 4.9 MB - -
🗜️ Gzip Size 1.4 MB - -
📄 JavaScript 4.8 MB - -
🎨 CSS 112.1 KB - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

Generated by Rsdoctor GitHub Action

@codspeed-hq

codspeed-hq Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 43 untouched benchmarks
⏩ 47 skipped benchmarks1


Comparing feat/upload-ci-binary-size (b37d494) with main (e8a7bce)

Open in CodSpeed

Footnotes

  1. 47 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant