[code-infra] Migrate CircleCI jobs to Gen2 resource classes by LukasTy · Pull Request #48593 · mui/material-ui (original) (raw)

@LukasTy @claude

Switch every resource_class declaration to its .gen2 counterpart for an all-Gen2 baseline. Per-job overrides for jobs where Gen2 doesn't pay off will follow once we have CI duration data to compare against the master 24h Insights median.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

@LukasTy added type: enhancement

It’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature.

scope: code-infra

Involves the code-infra product (https://www.notion.so/mui-org/5562c14178aa42af97bc1fa5114000cd).

labels

May 29, 2026

@LukasTy @claude

Resolves lockfile drift on eslint-plugin-import — its eslint-import-resolver-typescript reference was being expanded into a nested form that simplifies away after dedupe.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

@LukasTy @claude

test_e2e and test_e2e_website are IO-bound (image pull + pnpm install + Playwright dominates the wall-clock), so Gen2 saved very little wall-clock while still charging the +20% per-minute premium:

test_e2e: 69s Gen1 → 60.5s Gen2 (1.14× speedup, below 1.20× break-even) test_e2e_website: 83s on Gen2 (no master baseline in pipeline workflow, follows the same mui-x precedent for e2e jobs)

Same pattern we saw on mui-x in mui#22610.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

@LukasTy @claude

test_static (1.18×), test_bundle_size_monitor (1.20×), and test_regressions (1.21×) all hover right around the 1.20× break-even threshold where Gen2 stops paying for itself. With N=2 PR runs the signal is too noisy to call them solidly above break-even, and the credit math is essentially flat either way.

Reverting them to Gen1 makes the per-job behavior more predictable and removes the risk of an unlucky variance swing pushing them below break-even on master.

Net credit reduction vs master stays at ~-20% per pipeline run; the remaining four CPU-bound jobs (test_browser, test_browser_legacy, test_unit, test_lint, test_types) all cleared 1.4× or better and carry the savings.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

@LukasTy LukasTy marked this pull request as ready for review

May 29, 2026 13:03

LukasTy added a commit to LukasTy/material-ui that referenced this pull request

Jun 1, 2026

@LukasTy @claude

mui#48557 added resource_class: 'medium+' and mui#48593 added resource_class: medium to the test_regressions job ~3h apart. Neither produced a textual conflict (different lines), so the merged config ended up with two resource_class keys — invalid YAML. CircleCI fails to parse config.yml and every pipeline on master errors before any job runs.

Consolidate to a single resource_class: medium+ directly under <<: *default-job, matching the other executor jobs (test_browser, test_e2e, ...). medium+ is still a Gen1 class — honoring mui#48593's revert off Gen2 — while preserving mui#48557's bump for the parallelized visual regression screenshots.

Co-Authored-By: Claude Opus 4.8 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

[ Show hidden characters]({{ revealButtonHref }})