跳转到内容

发布说明

受发布流程管理的包

本仓库当前通过 Changesets 管理发布的 npm 包如下:

  • compat-finder更新日志
  • blogsclub-signin-helper:不发布到 npm;通过 GitHub Release 提供 .user.js 资产,并由 Greasy Fork webhook 同步稳定版本。

版本规则

均遵循语义化版本号 MAJOR.MINOR.PATCH

  • patch:修复 bug、文案调整、内部实现改进,且不引入破坏性变更。
  • minor:新增向后兼容的能力,例如新增 CLI 参数、导出新 API。
  • major:引入不向后兼容的变更,例如删除 API、修改 CLI 兼容行为或输出约定。

发布前检查清单

准备发版前,建议按顺序确认以下事项:

  1. 准备合入本次版本的功能 PR 都已完成合并。
  2. 与本次发布相关的 CI 检查已全部通过。

发布流程概览

本仓库使用 Changesets 管理版本号与更新日志,并通过 release-packages.yml 自动创建 release PR,再按包类型发布 npm 包或 GitHub Release 资产。

整体流程分为两个阶段:

  1. 常规 PR 合并到 main 后,不会立即发布,而是先创建或更新 release PR。
  2. release PR 合并到 main 后,才会真正发布 npm 包或 GitHub Release 资产。

构建来源验证

发布工作流采用 GitHub 推荐的 reusable workflow 路线:包构建、npm pack 打包、产物上传与 artifact attestation 签发都在复用构建工作流内完成。

在真正执行 npm 发布前,工作流会先使用 gh attestation verify 校验全部 .tgz 包产物,确认这些文件确实由指定的复用构建工作流生成并签名。只有校验通过后才会继续发布,以保证发布到 npm 的包产物来源可验证且未被篡改。

Greasy Fork 同步

blogsclub-signin-helper 不发布到 npm。Release workflow 会保留并上传以下 GitHub Release 资产:

text
blogsclub-signin-helper.user.js

Release workflow 在所有 GitHub Release 成功后,将每个稳定版 userscript 的产物发布到 dist-userscript 分支的 <包名>/<资产文件名>。包名必须是普通目录名。版本号包含 - 的预发布版本仍保留 GitHub Release 资产,但不会更新该分支。发布时会整体替换本次包对应目录,不影响其他包目录;内容未变化时不会创建 commit。

在 Greasy Fork 的用户 webhook 信息页面生成 Secret,然后在 GitHub 仓库的 Settings → Webhooks 中添加 webhook:使用页面提供的 Payload URL,Content type 选择 application/json,只勾选 Push 事件,并保持 Active。

在 Greasy Fork 中将脚本同步地址设为:

text
https://raw.githubusercontent.com/HowieHz/howiehz-misc/dist-userscript/blogsclub-signin-helper/blogsclub-signin-helper.user.js

首次改为该地址后,请在 Greasy Fork 手动同步一次。之后,合并 Changesets 生成的 release PR 后,稳定版会在 GitHub Release 成功后更新分支,并由 Push webhook 触发 Greasy Fork 更新脚本。若分支发布失败,GitHub Release 不会回滚;使用 Actions 的 Re-run failed jobs 重试。

代码 MIT · 文稿 CC BY-SA 4.0 + SATA · 版权说明