#1925·rrweb

在 preview.cdn.rrweb.com 上添加每个 PR 资产

作者: Juice10创建于 2026年9月4日更新于 2026年9月4日

□ 状态

PR [1926] (https://GitHub.com/rrweb-io/rrweb/pul/1926)通过"pkg.pr. new"执行npm相容预览,是目前的短期路径. 这个问题仍然开放给浏览器在`preview.cdn.rrweb.com'上的资产使用。 这些资产需要下列单独的来源、验证、缓存和清理控制。

□动机

审查者应能够在Pull Request合并前加载由任何Pull Request生产的浏览器捆绑. 这些建筑包含不信任的PR JavaScript,所以它们必须使用单独的出自. 在`cdn.rrweb.com'上发表这些文章,将使任意的PR代码继承消费者已经授予该产品CDN的CSP信任.

制作的CDN已经使用了不可改变的精确版本 URL 外加短寿命重定向别名. 预览 CDN 可以重用该模型每个PR.

□ 建议的设计

官方网站:

  • 不可移动资产:https://preview.cdn.rrweb.com/pr/123/<full-sha>/<asset>>
  • 不可更改清单:`https://preview.cdn.rrweb.com/pr/123//manifest.json'
  • 可变别名:https://preview.cdn.rrweb.com/pr/123/latest/<asset>',作为转而使用不可变的URL而实施

运单应记录寄存器,PR号码,完全承诺SHA,工作流程运行ID,构建时间戳,每个允许的文件路径,字节大小,以及SHA-256散列.

使用两个工作流程:

  1. 一个没有特权的`pill request ' 工作流程检查并构建没有秘密或写写权限的公关代码,然后上传只包含可允许分发文件和清单的动作文物。
  2. 一个可信赖的 " 工作流程 -- -- 运行 " 工作流程接收已完成的构建活动,并具有 " 收集请求:写作 " 加上仅预览的R2证书。 它验证源寄存器/工作流程,成功运行,运行ID,PR关联,头SHA,存档路径,允许列表,文件计数,大小限制,和散列. 它必须将每个被下载的文件视为惰性字节:永远不要来源,导入,评价,或者执行来自公关的文物或任何脚本. 在验证后,它上传到R2,并用承诺、显示、不可改变的URL和`最晚'URL更新一个粘性PR注释。

使用无法读取,写入,清洗或配置生产CDN存储的专用预览R2桶和证书. 仅服务于"preview.cdn.rrweb.com".

缓存 :

  • 不可移动路径:`控制离心:公开,最大年龄=315.36000,不可移动'
  • 最新'重定向和任何可变元数据:短命缓存,例如缓存控制:公开,最大-年龄=60'
  • 只有在每个不可改变的物体和清单上载和通过散列核查后,才能更新`最新 ' 。

在打开公关时保持构建 。 预定的清理应在关闭后30天删除PR前缀,R2生命周期规则应去掉90天以上的预览对象作为后置. 目标被删除时删除或失效可变别名.

□ 接受标准

  • 每个公关,包括分叉公关,都可以产生预览资产,而不向公关代码暴露秘密.
  • 一个可信任的上传器验证 . . . . . . .