From 39823b05c149868a2ca95b036b9d941e576ef4af Mon Sep 17 00:00:00 2001 From: kdletters Date: Wed, 30 Sep 2026 12:00:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DJenkins=20release=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83=E6=B1=A1=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固定发布构建单测使用dev渠道,避免继承Jenkins的release环境变量。 记录Mac构建在Windows目标测试中读取NSIS配置失败的根因与排障口径。 --- apps/ai-game-creator-shell/scripts/build-release.test.mjs | 6 +++++- docs/project-memory/shared-memory/pitfalls.md | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/ai-game-creator-shell/scripts/build-release.test.mjs b/apps/ai-game-creator-shell/scripts/build-release.test.mjs index fcfd43f5a..8724bcce1 100644 --- a/apps/ai-game-creator-shell/scripts/build-release.test.mjs +++ b/apps/ai-game-creator-shell/scripts/build-release.test.mjs @@ -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) { diff --git a/docs/project-memory/shared-memory/pitfalls.md b/docs/project-memory/shared-memory/pitfalls.md index 8fef67f52..c947dc7d0 100644 --- a/docs/project-memory/shared-memory/pitfalls.md +++ b/docs/project-memory/shared-memory/pitfalls.md @@ -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 表格整块不渲染(表头 `| 素材 | 用途 | 路径 |`、`|---|---|---|` 与数据行以纯文本连在同一行里);同一段文本里的路径还会出现 `gameame.js`、`assetsanvas-generated/...` 这种被切坏的占位符。重开项目读历史时同一段话渲染正常,很容易被当成渲染器偶发或模型写坏了 Markdown。