Skip to content

Trial windows-staging queue (m8i.2xlarge) for Windows Dev Build (do not merge)#3294

Draft
iangmaia wants to merge 4 commits intotrunkfrom
trial-windows-staging-m8i
Draft

Trial windows-staging queue (m8i.2xlarge) for Windows Dev Build (do not merge)#3294
iangmaia wants to merge 4 commits intotrunkfrom
trial-windows-staging-m8i

Conversation

@iangmaia
Copy link
Copy Markdown
Contributor

@iangmaia iangmaia commented Apr 30, 2026

Summary

Routes the Windows Dev Build group (.buildkite/pipeline.yml) to the windows-staging queue. Pairs with Automattic/buildkite-ci#844, which has the staging queue settled on m8i.2xlarge.

Use this branch as the guinea pig for any subsequent staging-queue benchmarks (next likely candidates: caching the bundle node_modules dirs, replacing Squirrel.Windows with electron-builder's NSIS).

Findings so far

vs. the prod windows queue's c5.4xlarge baseline:

  • m8i.2xlarge (#15296): x64 23 m 54 s, arm64 23 m 41 s → ~13% faster than c5.4xlarge.
  • m8i.4xlarge trial (#15337): x64 23 m 27 s, arm64 23 m 13 s → only ~30 s on top of 2xlarge → workload isn't CPU-saturated past 8 cores.

Log breakdown of the dev build (#15337 phase analysis):

  • Squirrel.Windows installer (LZMA pack): 9 m 57 s (~42% of wall-clock) — single-threaded, bottleneck.
  • electron-forge prePackage hook: 3 m 25 s — two flat npm install runs (apps/studio + apps/cli).
  • Root npm install: 2 m 43 s — already optimized via toolkit-style npm cache.
  • electron-packager copy + asar: 2 m 57 s combined.
  • AppX packaging + signing: 3 m 14 s.

Things tried and discarded

  • --prefer-offline on the two install:bundle scripts (#15378). No meaningful change vs. baseline (reverted in 7d000c6). Reason: with --no-package-lock npm still does a full registry resolution, and --prefer-offline only affects tarball fetching, not resolution.

Workflow

This PR remains a draft and must not merge. When future studio-side optimizations are ready to benchmark, push them onto this branch, run a Windows Dev Build via "🚦 Build for Windows?", and compare against the m8i.2xlarge baselines above.

🤖 Generated with Claude Code

@iangmaia iangmaia changed the title Trial windows-staging queue for Windows Dev Build (do not merge) Trial windows-staging queue + --prefer-offline bundle installs (do not merge) May 1, 2026
@iangmaia
Copy link
Copy Markdown
Contributor Author

iangmaia commented May 1, 2026

@copilot resolve the merge conflicts in this pull request

Copy link
Copy Markdown
Contributor

Copilot AI commented May 1, 2026

@copilot resolve the merge conflicts in this pull request

Resolved the conflict in .buildkite/pipeline.yml — kept the windows-staging queue from this branch and added the USE_AZURE_TRUSTED_SIGNING: 1 env var that trunk introduced. Merged in commit 36fc7dc.

@iangmaia iangmaia changed the title Trial windows-staging queue + --prefer-offline bundle installs (do not merge) Trial windows-staging queue (m8i.2xlarge) for Windows Dev Build (do not merge) May 1, 2026
iangmaia and others added 4 commits May 1, 2026 19:30
Routes the Windows Dev Build group to the `windows-staging` queue so we
can benchmark m8i.4xlarge (Intel Xeon 6 / Granite Rapids) against the
prod `windows` queue's c5.4xlarge (Skylake-SP, late-2017).

Pairs with Automattic/buildkite-ci#844. Draft only — revert this commit
before merging.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The two install:bundle scripts (apps/studio + apps/cli) run inside the
electron-forge prePackage hook to produce flat, non-workspaces
node_modules trees that can be packaged into the Electron app. They
inherit the local npm cache (./vendor/npm) that the root npm ci has
already populated 3+ minutes earlier, but without --prefer-offline npm
still hits the registry to check whether each cached tarball is the
latest matching version.

In CI, the lockfile-driven root install just resolved against the
registry — the bundle installs (which use --no-package-lock by design,
since workspace lockfiles aren't usable in a flat install) are fine to
prefer the just-populated tarball cache without re-checking. Local devs
running install:bundle outside CI are similarly fine: --prefer-offline
falls back to the network when a version isn't cached.

Expected savings on the Windows Dev Build prePackage phase: 30-60s.
Currently being benchmarked on the windows-staging queue (m8i.2xlarge)
via this PR — will compare against build #15296 baseline (no
--prefer-offline, x64 23m 54s, arm64 23m 41s).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Empirical comparison (#15378 vs #15296) showed no meaningful win.
Subtle reason: with --no-package-lock npm still does full registry
resolution to figure out which versions match the semver ranges, and
--prefer-offline only changes tarball-fetch behavior, not resolution.
The resolver step is most of the bundle-install wall-clock, so the
flag isn't doing useful work here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@iangmaia iangmaia force-pushed the trial-windows-staging-m8i branch from 7d000c6 to b5acef0 Compare May 1, 2026 17:30
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.

2 participants