修复 AGC release 渠道 macOS 发布门禁被环境渠道带挂
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m28s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m54s
Project CI / Backend tests (pull_request) Successful in 4m12s
Project CI / Frontend tests (pull_request) Successful in 2m38s
Project CI / Native shell tests (pull_request) Successful in 6m36s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m2s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 9m30s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m46s
Project CI / Repository checks (pull_request) Successful in 2m18s

- build-release.test.mjs 的 NSIS 改名钩子用例改用 withEnv 清掉 AGC_UPDATE_CHANNEL,避免 release lane 必挂
- pitfalls 补记该形态第二次复发与隔离口径
This commit is contained in:
2026-09-30 11:04:37 +08:00
parent 7b04830a02
commit 733c646764
2 changed files with 8 additions and 1 deletions
@@ -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) {
@@ -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` 的默认值。
## 同一条链路两处上限不一致:平台合法产出被客户端整条丢弃