修复Jenkins release渠道测试环境污染
Project CI / AI game creator shell Rust smoke (push) Successful in 1m45s
Project CI / AI game creator shell Rust crates (push) Successful in 3m12s
Project CI / Backend tests (push) Successful in 3m53s
Project CI / Frontend tests (push) Successful in 1m45s
Project CI / Native shell tests (push) Successful in 5m36s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m53s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m20s
Project CI / Repository checks (push) Successful in 2m32s
Project CI / AI game creator shell web tests (push) Successful in 1m48s

固定发布构建单测使用dev渠道,避免继承Jenkins的release环境变量。

记录Mac构建在Windows目标测试中读取NSIS配置失败的根因与排障口径。
This commit is contained in:
2026-09-30 12:00:13 +08:00
parent b7862288d0
commit 39823b05c1
2 changed files with 12 additions and 1 deletions
@@ -949,7 +949,11 @@ test('--no-bundle 不预置 NSIS 工具链', async () => {
});
test('release stages Node before Tauri and injects its resource mapping only for bundles', () => {
const context = resolveReleaseContext(['--target', windowsTarget]);
// Jenkins release lanes set AGC_UPDATE_CHANNEL=release; this fixture also checks the
// dev-only Windows NSIS hook, so keep the channel explicit instead of inheriting the host.
const context = resolveReleaseContext(['--target', windowsTarget], {
AGC_UPDATE_CHANNEL: 'dev',
});
const events = [];
runTauriBuild(['--target', windowsTarget], context, {
stageRuntime(target) {
@@ -2,6 +2,13 @@
这里只记录对当前开发仍有用的症状、根因、排查方法和风险边界。同一事实保留一个当前口径;退役对象的专属过程与单轮测试结果由 Git 历史追溯。遇到旧路径或版本时,以现行代码和专题文档为准。
## 2026-09-30 Jenkins release 渠道环境污染 AGC 构建单测
- **现象**:Jenkins `Genarrative-Agc-MacOS-Build` 的 release lane 在执行 `build-release.test.mjs` 时,`release stages Node before Tauri...` 用例报 `Cannot read properties of undefined (reading 'nsis')`。
- **原因**:用例还断言 dev-only 的 `bundle.windows.nsis.installerHooks`,但 `resolveReleaseContext()` 默认读取进程环境;Jenkins 注入 `AGC_UPDATE_CHANNEL=release` 后,测试上下文变成 release。release 渠道只保留 Node 资源映射,没有 dev 的 NSIS hook,于是 `config.bundle.windows` 不存在。macOS 只是运行测试的宿主,测试实际覆盖的是 Windows target。
- **处理**:凡是断言特定渠道配置的测试,必须通过 `resolveReleaseContext(args, { AGC_UPDATE_CHANNEL: 'dev' })` 或等价夹具显式固定渠道,不能继承 Jenkins release 环境。
- **验证**:`AGC_UPDATE_CHANNEL=release node --test apps/ai-game-creator-shell/scripts/build-release.test.mjs`。
## 2026-09-29 逐 delta 脱敏会吃掉段尾换行:DirectProject 汇报的 Markdown 表格整块失效
- **现象**:AGC 项目对话里 agent 汇报正文渲染错位——段落并进同一行、序号项挤成一段、Markdown 表格整块不渲染(表头 `| 素材 | 用途 | 路径 |`、`|---|---|---|` 与数据行以纯文本连在同一行里);同一段文本里的路径还会出现 `game<absolute-path>ame.js`、`assets<absolute-path>anvas-generated/...` 这种被切坏的占位符。重开项目读历史时同一段话渲染正常,很容易被当成渲染器偶发或模型写坏了 Markdown。