Commit Graph
18 Commits
Author SHA1 Message Date
imccyu 18bd83bf88 fix(ci): repair Wine heap budget and release workflow tests (#7438)
* fix(ci): budget Wine client heap and align release assertions

* fix(release): restore hosted publication runners

* fix(ci): split Wine client checks and strengthen dispatch tests

* docs: remove Wine diagnostic instruction from AGENTS
2026-10-28 11:22:35 +08:00
imccyu 0ce33089d9 fix(build): raise Host compiler heap limit to 8 GiB 2026-10-23 15:49:01 +08:00
Turtle 2099andturtle1999 14dcb78ee8 fix(ci): split the Wine Host compile to fit its heap budget (#6578)
The Wine gate compiled the Host face with one `tsc -b tsconfig.host.json`,
which holds the project-reference graph and the aggregate program in a
single V8 process and aborted at 4063.4 of 4088.3 MB. The supported build
splits those steps, and the native Windows build in the same run compiled
the references at 4096 and reached the aggregate without running out of
memory.

Compile the referenced projects first, then type-check the aggregate, both
at 4096. Assert the two commands and their order, and reject the fused
invocation.

Co-authored-by: turtle1999 <[email protected]>
2026-10-19 11:12:07 +00:00
Tianyi Cui 9b310b2b4b Generate source metadata before package compilation 2026-10-18 14:29:23 +08:00
turtle1999 687aa02578 fix(ci): preserve Wine build metadata and isolate test fixtures 2026-09-24 02:32:24 +08:00
winewill 4e41ccadcc build(desktop): check every import record and mirror the bundle step in the wine gate
The packaged-imports plugin moves from generateBundle to moduleParsed so
external dynamic import() and require() targets, which chunk metadata
omits, fail the bundle too. Each bundle now carries an import policy:
the main process allows Node builtins, sandboxed preloads only the
modules Electron's require polyfill resolves, and the failure names the
importing module and the allowed set. The wine Windows gate bundles
apps/desktop after the Host tsdown pass like build:lib:host, the
ts-build-config note lists that step, and the tsdown docs name the
workspace match exactly.

Fixes #4993
2026-09-23 12:03:48 +08:00
Tianyi Cui ab1ee99685 ci: defer macOS ARM runtime and Wine checks to master 2026-09-07 12:40:40 +08:00
Tianyi Cui d06f544d8c fix(ci): give Wine Host compiler sufficient heap 2026-08-23 01:48:35 +08:00
Tianyi Cui 548726eede ci(wine): add verified archive mirror fallback 2026-08-09 19:58:29 +08:00
Tianyi Cui dec4d1ffdb ci(wine): resume partial Node downloads 2026-08-09 18:13:04 +08:00
Tianyi Cui 9b686a4203 ci(wine): bound Node distribution downloads 2026-08-09 18:01:44 +08:00
Tianyi Cui ffb1f187ee ci: keep Wine required beside native Windows 2026-08-09 06:21:41 +08:00
Tianyi Cui 9b169f7555 ci: run required checks on native Windows 2026-08-08 18:37:32 +08:00
imccyu 9c3d5725a5 build: order Host and Client compilation faces 2026-08-08 04:20:39 +08:00
imccyu 41677c3be0 fix(ci): preserve TypeRT contract build order on Windows 2026-08-07 21:47:14 +08:00
Tianyi Cui 6227b55e4a fix(ci): retry the Wine lane's pnpm install on the hoisted-linker rename race
The wine blocking job flaked with ERR_PNPM_ENOENT rename '_tmp_*' ->
'<pkg>/node_modules/esbuild' during workspace snapshot + pnpm install
(runs 30334004123 and 30340039598), and a plain rerun passed. Root
cause is upstream pnpm/pnpm#12880: the hoisted linker's parallel
linkers race to rename their _tmp_* staging directory onto the same
nested package path, and the loser exits although an identical
re-install succeeds. Only this lane uses nodeLinker: hoisted, so only
this lane hits it.

snapshot_and_install now retries exactly that log signature up to two
times, wiping the scratch tree's node_modules first (the snapshot
itself contains none, so the wipe restores the pre-install state) and
logging each retry with the upstream issue. Any other install failure
still fails on the first attempt, and a race that survives the final
attempt still fails loud with the install log tail.
2026-07-28 16:16:10 +08:00
Tianyi Cui d270c285ab fix(review): portable checksum verifier and full provisioning wait
sha256sum-or-shasum selection happens in preflight (macOS ships shasum,
not GNU coreutils) with a clear missing-tool hint; provisioning now waits
for every child and reports each named status before exiting, so a fast
failure can neither hand the EXIT trap a scratch tree that a still-running
install is writing into nor bury the root cause behind a downstream
symptom.
2026-07-27 17:49:11 +08:00
Tianyi Cui f12ea986cb ci: share one Wine Windows gate script between CI and an optional local gate
scripts/wine-windows-gates.sh owns the whole lane — workspace snapshot,
concurrent Node/wineboot/install provisioning, entrypoint resolution, the
vue link, smoke, and the two concurrent blocking gates — so the ci.yml
windows job shrinks to runner provisioning plus one script call, and
pnpm run check:windows-wine runs the identical script locally. The local
path never mutates the working tree, persists the Wine prefix and the
checksum-verified Windows Node zip under .cache/wine-windows/, and falls
back to the cached zip offline. AGENTS.md ceiling 1680 -> 1695 for the
one-line command entry.
2026-07-27 17:04:05 +08:00