Skip to content

修复 v1.0.2 发行失败并加固 CI 与 Release - #17

Merged
areyoubugcoder merged 2 commits into
mainfrom
worktree-release-license
Oct 30, 2026
Merged

areyoubugcoder merged 2 commits into
mainfrom
worktree-release-license

Conversation

@areyoubugcoder

@areyoubugcoder areyoubugcoder commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

问题与改动后行为

v1.0.2 的 Release 工作流(run 41007588919)在约 12 分钟构建后失败:组装便携包时下载 www.gnu.org 上的 LGPL 全文,连接超时(WinError 10060)。复盘时一并收紧了发行流程。使用者可见的应用行为不变。

发行修复

  • LGPL 全文随仓库保存在 tools/licenses/Frida-COPYING.LIB,内容取自 v1.0.1 发行包,组装时校验摘要,不再联网。
  • 新增 .gitattributes 禁止转换该目录的换行,否则 Windows 检出后摘要会变。
  • 新增 native/test_runtime_lock.py,在构建前校验摘要。

安全

  • 签名私钥从 job 级 env 收窄到 prepare 与安装包构建两个步骤,不再暴露给依赖安装、构建脚本和测试。
  • 工作流默认 contents: read,只有 publish 持有写权限;checkout 不保留凭据。
  • release.yml 的 action 全部固定到 SHA,ci.yml 的 rust-cache 同样固定。

可靠性

  • package-windows-release.py --prefetch 在预检中下载全部锁定依赖,网络问题在构建前暴露。
  • 新增 rust-toolchain.toml 固定 Rust 1.99.1,取代浮动的 stable,本地开发也使用该版本。
  • packageManager 固定 pnpm 10.29.2,与官网 workflow 和本地一致;CI 与 Release 原先使用 pnpm 9。
  • native/requirements.txt 固定 cffi 与 pycparser,测试依赖与发行包一致;组装时校验全部锁定包。
  • 所有 job 增加 timeout-minutes;CI 的 clippy 增加 --locked。

缓存

  • CI 增加 main 推送触发。rust-cache 只在 main 写入,PR 与标签只读取。
  • 发版前在 main 手动运行 Release 预演,同时写入后续标签可用的缓存,流程写入 docs/app-updates.md。

文档已同步:README.md、CONTRIBUTING.md、THIRD-PARTY-NOTICES.md、docs/app-updates.md、docs/windows-standalone.md。

验证

  • macOS:actionlint、test_ci*.py、tsc、pnpm test(44 + 6 项)、native/test_runtime_lock.py、cargo fmt --check(Rust 1.99.1)均通过。
  • macOS:--prefetch 下载并校验 5 个依赖;用伪造 PE 运行组装脚本成功,许可收集在 pnpm 10.29.2 下得到 Rust 439 项、前端 255 项。
  • macOS:core.autocrlf=true 模拟检出时摘要保持 cc535c21…;对照组无 .gitattributes 时变为 d486a19b…。
  • Windows:完整发行流程由本分支手动触发的 Release 预演验证,结果见 PR 评论。桌面启动与真实采集不涉及。

提交检查

  • 已在独立 worktree 开发验证,改动范围清晰。
  • 已同步相关文档、配置或 schema 说明,未引入外键。
  • 测试材料使用虚构数据,差异中没有真实账号、数据库、密钥、token、原始抓包或本地环境配置。
  • 未自动附加完整日志或诊断导出;需要的证据已经检查并脱敏。

🤖 Generated with Claude Code

areyoubugcoder and others added 2 commits October 30, 2026 16:34
v1.0.2 的 Release 在 12 分钟构建后因 www.gnu.org 连接超时失败。该文本固定
不变,改为随仓库保存并校验摘要;用 .gitattributes 防止 Windows 检出转换换行。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
私钥和写权限收窄到需要的步骤,构建前预下载全部锁定依赖,固定 Rust、pnpm、
action 与测试依赖版本。CI 增加 main 推送以写入缓存,PR 与标签只读取。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@areyoubugcoder areyoubugcoder changed the title 修复发行组装依赖 gnu.org 导致 v1.0.2 构建失败 修复 v1.0.2 发行失败并加固 CI 与 Release Oct 30, 2026
@areyoubugcoder

Copy link
Copy Markdown
Owner Author

Release 预演结果(Windows x64)

分支手动运行 41029604474,提交 20605fb,Windows job 通过,耗时与 v1.0.1 接近。publish job 因非标签运行而跳过,所以 latest.json 与草稿创建未被预演覆盖。

下载 artifact 后核对:

  • NSIS、MSI 的 .sig 均已生成,私钥收窄后签名正常;6 个附件的 SHA-256 全部匹配。
  • licenses/Frida-COPYING.LIB 摘要为 cc535c21…,与锁定值一致。
  • verification.json:1307 个文件校验通过,AES-GCM 与 DPAPI 自检通过;范围是离线完整性,未启动应用、未连接微信。
  • 运行环境:Python 3.12.10、frida 17.23.3、cryptography 50.0.2、cffi 2.0.0、pycparser 2.23。测试安装的 cffi、pycparser 现在与发行包一致。
  • 工具链:Rust 1.99.1、pnpm 10.29.2。
  • 便携包文件清单与 v1.0.1 完全相同(1308 项)。
  • 第三方许可清单:Rust 439 项、前端 254 项。macOS 上为 255 项,而 Windows 换用 pnpm 10 后仍是 254 项,所以这个差异不是 pnpm 版本造成的。

@areyoubugcoder
areyoubugcoder merged commit 1bee321 into main Oct 30, 2026
9 checks passed
@areyoubugcoder
areyoubugcoder deleted the worktree-release-license branch October 30, 2026 09:28
areyoubugcoder added a commit that referenced this pull request Oct 30, 2026
修复 v1.0.2 发行失败并加固 CI 与 Release
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