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 eed74a9fe..628779347 100644 --- a/apps/ai-game-creator-shell/scripts/build-release.test.mjs +++ b/apps/ai-game-creator-shell/scripts/build-release.test.mjs @@ -941,7 +941,13 @@ 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 lane 会带着 AGC_UPDATE_CHANNEL=release 跑这条门禁, + // 而 dev 改名钩子只注入默认(dev)渠道(见 createChannelConfig)。按「默认值测试必须隔离 + // 环境」的口径清掉渠道变量,断言才落在默认身份上;非默认渠道不注入钩子的边界由「dev 渠道 + // 的 Windows 包注入改名迁移钩子,其它渠道与目标不注入」覆盖。 + const context = withEnv({ AGC_UPDATE_CHANNEL: undefined }, () => + resolveReleaseContext(['--target', windowsTarget]), + ); 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 83c2e960a..c0a373a49 100644 --- a/docs/project-memory/shared-memory/pitfalls.md +++ b/docs/project-memory/shared-memory/pitfalls.md @@ -204,6 +204,7 @@ Copy Artifact 插件在**非 SYSTEM 认证**下按「认证用户」判权:只 - **处理(现行口径)**:断言默认渠道、默认目标等环境派生值的测试,必须用现有 `withEnv` 显式清除相关变量;构建入口继续按 `AGC_UPDATE_CHANNEL` 选择渠道,不为迁就测试改生产逻辑。 - **验证**:用 `AGC_UPDATE_CHANNEL=release node --test apps/ai-game-creator-shell/scripts/build-release.test.mjs apps/ai-game-creator-shell/scripts/cargo-features.test.mjs` 复现并验证修复,未设置变量时也必须通过。 - **关联**:`apps/ai-game-creator-shell/scripts/build-release.test.mjs`、`jenkins/Jenkinsfile.ai-game-creator-shell-macos-build`。 +- **复发(2026-09-30)**:`80bf54c3` 新增的 NSIS 改名钩子用例(`release stages Node before Tauri and injects its resource mapping only for bundles`)又直接读环境渠道、却无条件断言 dev 专属钩子,release 渠道的 macOS Job 再次在 Tauri 构建前失败(`Cannot read properties of undefined (reading 'nsis')`,2026-09-30 04:00 那次构建在 Checkout 后约 2 分钟即死、零产物),`release-mac` 因此停在旧版本;同一批门禁的其它用例与 dev 渠道都不受影响。按同一口径把该用例的 `resolveReleaseContext` 渠道读取裹进 `withEnv({ AGC_UPDATE_CHANNEL: undefined })` 后,`AGC_UPDATE_CHANNEL=release`、`=dev`、未设置三态均 44/44 通过。新写依赖渠道或目标的用例必须走 `withEnv`,不能依赖 `AGC_UPDATE_CHANNEL` / `AGC_BUILD_TARGET` 的默认值。 ## 同一条链路两处上限不一致:平台合法产出被客户端整条丢弃