// Jenkins Windows 预检入口:在数分钟的 Rust 编译之前完成 NSIS 工具链预置。 // // 预置失败必须在此之前失败关闭,避免 bundler 用 `io: unexpected end of file` // 把网络问题伪装成打包问题。 import { ensureNsisToolset, LOG_PREFIX } from './nsis-toolset.mjs'; // Jenkins 阶段用 `$ErrorActionPreference = 'Stop'` 执行 Powershell:重试告警走 // stderr 时可能被 PowerShell 当成终止错误,因此重试与进度一律写 stdout,只有 // 最终失败才写 stderr 并以退出码 1 失败关闭。 const logger = { log: (message) => console.log(message), warn: (message) => console.log(`${message}(将重试)`), }; try { const result = await ensureNsisToolset({ logger }); console.log(`${LOG_PREFIX} NSIS 工具链目录:${result.nsisDir}`); console.log(`${LOG_PREFIX} NSIS 原始归档缓存:${result.cacheDir}`); console.log( result.reused ? `${LOG_PREFIX} NSIS 工具链复用已有目录,未访问网络` : `${LOG_PREFIX} NSIS 工具链本次预置:${result.downloaded.join('、')}`, ); } catch (error) { console.error(`${LOG_PREFIX} NSIS 工具链预置失败:${error.message}`); process.exit(1); }