33036b65fc
Project CI / AI game creator shell Rust crates (push) Successful in 3m3s
Project CI / AI game creator shell Rust smoke (push) Successful in 3m50s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 6m16s
Project CI / Backend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
tauri-bundler 打包时现场从 GitHub 下载 nsis-3.11.zip 与 nsis_tauri_utils.dll 且不重试, Checkout 的 git clean -fdx 又会删掉工作区内的 target/.tauri,于是每个构建都要重下, 响应一旦被截断只会抛 `io: unexpected end of file`,让发布在 Rust 编译数分钟后失败。 - Jenkins Checkout 的 git clean 增加 -e apps/ai-game-creator-shell/src-tauri/target/.tauri,只保留工具缓存 - 新增 nsis-toolset.mjs:按固定 SHA1 预置 target/.tauri/NSIS,带 4 次重试并把原始归档缓存到工作区外 - 新增 ensure-nsis-toolset.mjs 与 nsis:prepare 脚本,作为 Jenkins 预检入口 - buildRelease 在 Windows 目标打包前接入工具链预置,预置失败即失败关闭 - Jenkins 新增 Tauri NSIS toolchain 阶段,在编译前预置、跑回归测试并校验 makensis 可执行 - 新增 nsis-toolset.test.mjs 并补 3 项 build-release 预置接入测试 - 同步开发运维文档与 shared-memory 排障记录
29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
// 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);
|
|
}
|