Skip to content

fix(release): 完成 portable ZIP 与 GitHub Release 闭环 - #87

Merged
Qiyuanqiii merged 4 commits into
mainfrom
codex/issue-56-finish
Aug 16, 2026
Merged

Qiyuanqiii merged 4 commits into
mainfrom
codex/issue-56-finish

Conversation

@Qiyuanqiii

Copy link
Copy Markdown
Member

背景 / Root cause

PR #83 已合并,但 #56 尚未闭环:

  • PR feat(release): per-user MSIX 安装、签名与升级卸载生命周期 #84 后续把 secrets.MSIX_CERTIFICATE_BASE64 直接写进 step-level if,GitHub 因工作流语法错误产生 3 次零 job 失败运行。
  • tag / workflow_dispatch 没有把版本传给构建与 ZIP 命名。
  • 工作流只上传临时 Actions artifact,没有真正创建 GitHub Release。
  • 没有从下载形态复核 ZIP 条目、伴随清单与启动结果;新增依赖缺许可证时也不会 fail closed。

改动

  • 修复 secret 条件:证书只在可信 tag 的 publish job 中进入环境,PR job 不接触签名 secret。
  • 固定 canonical release toolchain:Go 1.25.12、Node 24.16.0、Rust 1.97.1;校验 Go/npm/Cargo lock 与 canonical embedded WASI。
  • 新增单命令 scripts/release-desktop.ps1。
  • release-metadata.json 记录 Go/Node/npm/Rust、三个 lockfile 和 embedded analyzer 哈希。
  • ZIP manifest 增加 8 个白名单条目的逐项大小与 SHA-256;ZIP 连续生成两次必须字节一致。
  • 新增 verify-portable-zip.ps1,对版本、commit、companion、SHA256SUMS、ZIP 路径/重复项/条目哈希 fail closed,并启动解压后的 EXE。
  • v* tag 必须可追溯到 main;tag 构建成功后创建 GitHub Release,带 - 的版本发布为 prerelease。
  • 未配置受保护证书时不把 unsigned MSIX 放入 GitHub Release。

本地验证

  • actionlint:通过。
  • go test -count=1 ./cmd/releasegen:通过。
  • Frontend:59 files / 238 tests,通过;production build 通过;npm audit 0。
  • Desktop Go boundary tests:通过。
  • EXE 连续双构建 SHA-256 一致。
  • ZIP 连续双打包 SHA-256 一致。
  • SBOM/NOTICE:61 modules,许可证 61/61 识别。
  • 8 个 ZIP 条目、companion manifest、SHA256SUMS:完整性验证通过。
  • 从 ZIP 解压后的 cyberagent-desktop.exe 启动冒烟通过并创建隔离 store。

发布后步骤

本 PR 合并并确认 GitHub CI 后,将从合并后的 main 创建 v0.1.0-rc.1,验证 GitHub Release 下载件,再回填/关闭 #56。

Refs #56

@Qiyuanqiii
Qiyuanqiii marked this pull request as ready for review August 16, 2026 16:07
@Qiyuanqiii
Qiyuanqiii merged commit 10be789 into main Aug 16, 2026
8 checks passed
@Qiyuanqiii
Qiyuanqiii deleted the codex/issue-56-finish branch August 16, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant