Skip to content

ci: Turbopack back on the self-hosted build slot (64 GB); webpack stays elsewhere - #16941

Merged
diegosouzapw merged 1 commit into
release/v3.8.52from
ci/turbopack-on-64g-slot
Oct 17, 2026
Merged

diegosouzapw merged 1 commit into
release/v3.8.52from
ci/turbopack-on-64g-slot

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

Summary

  • The ci.yml Build job uses Turbopack again when it lands on the self-hosted build slot (USE_VPS_RUNNER and USE_VPS_BUILD_RUNNER both 'true') and keeps webpack on hosted runners. Follow-up to ci: build with webpack in the nightlies and in the Build job (Turbopack OOMs the .113) #16870, which had forced webpack everywhere while the .113 had 48 GB.
  • The four nightly build:cli steps stay on webpack (backend-only jobs that share the box with the light runners).
  • Tests: tests/unit/build/heavy-build-queue.test.ts pins the Turbopack switch to the runner condition again; tests/unit/ci-build-bundler-webpack.test.ts keeps the nightlies on webpack and checks that the Build switch is tied to the opt-in slot.

Why

The .113 was raised from 48 to 64 GB on 2026-10-16 (VM drained runner by runner, no job killed). Validation on the box with the production tree (release/v3.8.52, Next 16.3.8, original next.config.mjs):

Run on the .113 Result
Turbopack, cgroup cap 36 GB, alone passes, 25 min, peak 36 GB
Turbopack, cap 50 GB, with three lint jobs running alongside (64 GB VM) passes, 23 min, peak 49 GB uncapped, VM 54 GB used / 8 GB available, swap 0, 0 OOM, memory PSI 0
experimental.cpus: 8 does not help (OOM at 34.7 GB in the compile phase)
Next 16.4.2 (any config) OOM: the Rust next-build alone reaches 33 GB in the compile phase - do not bump without re-measuring
webpack 14 GB, 1h23 under load (kept for hosted and nightlies)

The runner slot (omniroute-113-5, MemoryHigh=42G/MemoryMax=45G) squeezes the build into the 36 GB range it tolerates. Worst case with the light runners at their own limits is still an overcommit of the 64 GB VM, so the first Builds are being watched; pve1-freeze-watch and the guest OOM log will show if the box needs more.

Related Issues

Target Branch

  • Base is the active release/v3.8.x branch (the highest open release/v*), not main

Validation

  • Change type: build-deploy (CI workflow + guard tests)
  • Tests updated first and seen failing against the webpack-only workflow, then green: heavy-build-queue.test.ts, ci-build-bundler-webpack.test.ts, plus vps-build-runner-gate, vps-runner-variable-scope, check-workflows-provenance-runner, quality-rail-gate-membership
  • actionlint, prettier and eslint clean on the touched files; pre-commit checks pass
  • The Turbopack build of this tree was run end to end on the 64 GB .113 (artifact produced) before this change

Tests Added Or Updated

  • Updated tests/unit/build/heavy-build-queue.test.ts and tests/unit/ci-build-bundler-webpack.test.ts.
  • No production code changed.

Reviewer Notes

  • Rollout order: omniroute-113-5 re-enabled, then USE_VPS_BUILD_RUNNER=true, then this merge - the push-triggered Build of the merge is the first real Turbopack run on the slot.
  • Same-repo PR Builds queue on the single omni-build slot again (as before 10-16); fork PRs stay on hosted webpack.

…ys elsewhere

The .113 build box was raised from 48 to 64 GB on 2026-10-16. Measured
there with a cgroup cap and swap off, the Turbopack build of this tree
peaks at ~36 GB under the cap (49 GB uncapped: compile ~21 GB plus 31
static-generation workers at 17-21 GB) and finished in 23 min with three
lint jobs running alongside - no swap, no OOM, memory PSI 0. That is
what did not fit the 48 GB box next to the light runners (~200 red
Builds between 10-06 and 10-16).

The ci.yml Build therefore goes back to Turbopack when it lands on the
opt-in slot (USE_VPS_RUNNER and USE_VPS_BUILD_RUNNER both 'true') and
keeps webpack on the 16 GB hosted runners, which cannot hold it. The
four nightly build:cli steps stay on webpack: they are backend-only and
share the box with the light runners. Next 16.4.x regresses (33 GB in
the compile phase alone) and must be re-measured before any bump.

Tests follow the policy: heavy-build-queue pins the Turbopack switch to
the runner condition again, ci-build-bundler-webpack keeps the nightlies
on webpack and checks the Build switch is tied to the slot.
@diegosouzapw
diegosouzapw merged commit c75b18b into release/v3.8.52 Oct 17, 2026
10 of 13 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

CI Coverage Report

  • Coverage job: skipped
  • PR test policy: failure

Coverage artifact was not available for this run.

PR Test Policy

This PR changes production code in src/, open-sse/, electron/, or bin/ without accompanying automated tests.

@diegosouzapw
diegosouzapw deleted the ci/turbopack-on-64g-slot branch October 18, 2026 23:48
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