From 733c646764bb4c7a1ffd7a2a6457c98b2d173ee2 Mon Sep 17 00:00:00 2001 From: suzmii Date: Wed, 30 Sep 2026 11:04:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20AGC=20release=20=E6=B8=A0?= =?UTF-8?q?=E9=81=93=20macOS=20=E5=8F=91=E5=B8=83=E9=97=A8=E7=A6=81?= =?UTF-8?q?=E8=A2=AB=E7=8E=AF=E5=A2=83=E6=B8=A0=E9=81=93=E5=B8=A6=E6=8C=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build-release.test.mjs 的 NSIS 改名钩子用例改用 withEnv 清掉 AGC_UPDATE_CHANNEL,避免 release lane 必挂 - pitfalls 补记该形态第二次复发与隔离口径 --- apps/ai-game-creator-shell/scripts/build-release.test.mjs | 8 +++++++- docs/project-memory/shared-memory/pitfalls.md | 1 + 2 files changed, 8 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 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` 的默认值。 ## 同一条链路两处上限不一致:平台合法产出被客户端整条丢弃