#52745: build: faster symbol archives, skip test artifacts on publish
Description of Change
Publish jobs spend a large chunk of their wall clock outside the build itself; this trims the two biggest non-build items without changing any released file formats.
dsym.tar.xzis now written with multi-threaded xz (bsdtar --options xz:threads=0;XZ_OPT=-T0under GNU tar). "Zip Symbols" was 25–47 min on every macOS publish job because xz was single-threaded over ~7 GB of dSYMs. Output is still a plain.xzstream.- Symbol zips (
pdb.zip,dsym-snapshot.zip,debug.zip,symbols.zip) use deflate level 6 instead of 9. #48766 added-9for the 2 GB asset limit; measured below, it only buys ~0.4% (~8 MB on the 1.93 GB win-x64pdb.zip) for ~1.7x the time — "Zip Symbols" was 8–16 min on Windows. - "Zip Symbols" now only runs when the build was asked for symbols. Every testing and PGO build passes
generate-symbols: false(the input was declared but never read), andsymbols.zip/pdb.zip/dSYM archives are only consumed by the release uploader (move-artifacts.shalready tolerates their absence), yet each Windows PR build spent 8–13 min zipping PDBs — it's the largest remaining step on a fully cached build. - Publish and release-build jobs pass
generate-test-artifacts: false: nothing consumessrc_artifacts(12.5 min of msyscp -r+ tar per Windows publish job, 8 × 143–787 MB uploads per release) or the linux arm64 cross-arch snapshot (5.7 min) outside test jobs. Themksnapshot_argsfixup was behind the same flag but is also read by@electron/mksnapshotfrom the released zip, so it now also runs foris-releasebuilds.
Measured on a 512 MiB slice of an unstripped electron binary (Linux, one core unless noted):
| time | size | |
|---|---|---|
| python zipfile level 9 → 6 | 29.5 s → 17.2 s | +0.4% |
zip -9 → zip (6) |
31.3 s → 18.1 s | +0.4% |
tar -cJf → xz:threads=5 |
164 s → 38.6 s | +1.0% |
Reference timings are from the v45.0.0-nightly.20260808 / v44.0.0-beta.2 publish runs.
Checklist
- I have built and tested this change
- I have filled out the PR description
- I have reviewed and verified the changes
Verified make_zip / make_tar_xz locally against both GNU tar and bsdtar (archives list and xz -t cleanly), lint --py passes, and copy-pipeline-segment-publish.js --check is still in sync. The macOS/Windows "Zip Symbols" step time on this PR's own CI is the real check for the xz change; the publish-flag change is only exercised by a publish run.
Release Notes
Notes: none
Backports
Semver Impact
Semantic Versioning helps users understand the impact of updates:
- Major (X.y.z): Breaking changes that may require code modifications
- Minor (x.Y.z): New features that maintain backward compatibility
- Patch (x.y.Z): Bug fixes that don't change the API
- None: Changes that don't affect using facing parts of Electron