Skip to content

Improve build perf #75983

@joaomoreno

Description

@joaomoreno

Several perf problems with the build that need to be addressed:

  • All agents do the same compilation/optimization/minification
  • Each extension get compiled/optimized/webpacked 6 (!) times
  • node.exe gets downloaded 2 times
  • macOS agents seem slower than before, though they end up doing more than others:
    • Sourcemaps
    • Bundle stats (Submitted bundle stats)

DONE ✔️

  • Remove VSCODE_WEB hack, create vscode-web-* tasks
  • De-duplicate compilation tasks
    • Remove old extensions compilation
    • Dedupe extensions build
    • Cleanup Node.JS downloading
    • Dedupe Node.JS downloading
    • Dedupe vscode build
      • Alpine
      • ARM
  • Verify Webpack catches TS type errors
  • Use the Yarn cache task
  • Run common steps only once in a separate Linux build agent
    • Hygiene
    • Compilation
    • Optimization & minification
    • Cache result in VSTS artifacts, such that other agents and successive build resubmissions can simply pick that up
  • Have VSCODE_COMPILE_ONLY flag
  • Get template for arm/alpine
  • Remove node build/lib/builtInExtensions.js
  • Move quality/*/package.json dependencies into actual package.json dependencies
  • Deduplicate extension compilation Remove legacy extensions compilation from build #77058
  • Cleanup VSCODE_ARCH usages in Linux build 7b0cd32
  • Set sensible values for task timeout
  • Lower agent parallel jobs
  • Move sourcemaps to common agent
  • Move bundle stats to common agent
  • Move upload-configuration to common agent

Task Step Windows Linux macOS Unit
Prepare build   11 6.5 7.5 min
Build   25 21 45 min
           
VS Code compile-client-build 170 160 215 sec
  optimize-vscode 31 31 86 sec
  minify-vscode 152 139 290 sec
  vscode-win32-x64-min 259 191 436 sec
           
Server compile-client-build 146 134 198 sec
  optimize-vscode-reh 5 5 16 sec
  minify-vscode-reh 27 23 79 sec
  vscode-reh-win32-x64-min 169 113 312 sec
           
Web compile-client-build 148 136 188 sec
  optimize-vscode-reh 27 28 64 sec
  minify-vscode-reh (web) 134 120 273 sec
  vscode-reh-win32-x64-min (web) 167 116 329 sec
           
Unit   1.5 1 1.5 min
Integration   9 0 8 min
Publish   6 4 0.5 min

Metadata

Metadata

Assignees

Labels

debtCode quality issuesengineeringVS Code - Build / issue tracking / etc.vscode-buildVS Code build process issues

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions