把签名凭据卫生收进 check:production-ops 门禁
Project CI / AI game creator shell Rust crates (push) Successful in 1m31s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m58s
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled

- 两个 AGC 打包管线必须用 withCredentials 把 AgcUpdaterSigningKey / ...Password 绑到 TAURI_SIGNING_PRIVATE_KEY / ..._PASSWORD
- 禁止 echo $TAURI_SIGNING_PRIVATE_KEY、Write-Host $env:...、%VAR%、set -x 之类会把绑定凭据打进日志的写法;归档 glob 不得出现 *.pem|*.key|*.pfx|*.p12
- 变异验证:往 mac 管线插一行 echo $TAURI_SIGNING_PRIVATE_KEY 后门禁立刻以「不得把签名凭据打印到构建日志」失败退出;还原后 check:production-ops OK
- 渠道化里程碑第 5 条补记该静态门禁与剩余边界(真实 Jenkins 运行日志仍需 CI 取证)
This commit is contained in:
kdletters
2026-09-29 00:05:54 +08:00
parent f6ccabf425
commit d39931a01a
2 changed files with 51 additions and 1 deletions
@@ -37,7 +37,7 @@
- [x] 渠道与目标平台不匹配、缺少签名私钥或私钥密码错误时发布失败关闭,不产生半成品清单。
- [x] 发布后 OSS 上安装包、签名与渠道清单三者一致:清单内地址指向已存在的对象,签名与安装包匹配(2026-09-28 只读核对已发布的 `dev-win` / `dev-mac` 渠道,两个渠道的产物都下载后验签通过,见文末「本轮核对」)。
- [x] universal macOS 产物的两个平台键指向同一对象同一签名,不存在只挂单一架构键或指向不存在对象的情况。(清单构建器对 universal 目标仍按此契约工作;但 2026-09-21 决策已把 macOS 发行改成 arm64 单架构,线上 `dev-mac` 按该决策只登记 `darwin-aarch64`,这条的线上口径以 macOS 里程碑第 1 条为准。)
- [ ] Jenkins 归档与日志中不出现签名私钥内容,凭据只注入构建进程。(静态核对:`jenkins/Jenkinsfile.ai-game-creator-shell-build` 用 `withCredentials` 注入 `TAURI_SIGNING_PRIVATE_KEY` / `..._PASSWORD`,归档 glob 只含 `bundle/**/*.exe|*.sig|latest.json|legacy-latest.json|release-notes.txt` 与 `.jenkins-source-commit`,没有私钥文件;真实 Jenkins 运行的日志脱敏仍需一次 CI 构建取证。)
- [ ] Jenkins 归档与日志中不出现签名私钥内容,凭据只注入构建进程。(静态核对:两个 AGC 打包管线都用 `withCredentials` 把 `AgcUpdaterSigningKey` / `...Password` 绑到 `TAURI_SIGNING_PRIVATE_KEY` / `..._PASSWORD`,归档 glob 只含安装包/签名/清单/说明/commit,没有私钥文件。2026-09-29 把这条静态口径收进仓库门禁 `npm run check:production-ops`:缺凭据绑定、或出现 `echo $TAURI_SIGNING_PRIVATE_KEY`、`Write-Host $env:...`、`%TAURI_SIGNING_PRIVATE_KEY%`、`set -x` 之类会打日志的写法、或归档 glob 出现 `*.pem|*.key|*.pfx|*.p12` 都判失败;变异验证:往 mac 管线插一行 `echo $TAURI_SIGNING_PRIVATE_KEY` 后门禁立刻以「不得把签名凭据打印到构建日志」失败退出。真实 Jenkins 运行的日志脱敏仍需一次 CI 构建取证。)
- [x] 未显式指定渠道时按目标平台取默认渠道,且 `--no-bundle` smoke 路径仍不读远端版本、不改版本、不生成清单。
## 证据要求