Skip to content

fix(extensions): 修复第一方扩展发布恢复与验证 - #112

Merged
xiaoland merged 1 commit into
mainfrom
hotfix/first-party-extension-release
Sep 20, 2026
Merged

xiaoland merged 1 commit into
mainfrom
hotfix/first-party-extension-release

Conversation

@xiaoland

@xiaoland xiaoland commented Sep 20, 2026

Copy link
Copy Markdown
Member

目的与范围

修复第一方 Extension 发布中上传结果不明、重跑重新构建,以及已有关联跳过验证的问题;工作流统一命名为 First-party Extension release。本 PR 仅处理发布链,不包含来源 wizard、Extension 版本变更或 Core/docs 入门 PR。

改动

  • protected-main 发布分为候选构建/恢复与发布:先保存 plan、prepare descriptor、完整 ZIP 和摘要,再访问生产 Registry。
  • 同一次 workflow run 重跑复用原生不可变 Actions artifact,不重新选择或重建候选;产物保留 90 天,来源、run identity、Registry 和摘要不一致时拒绝写入。
  • 上传超时或暂时服务错误后,通过现有 publish 与公共回读有限确认状态。MF-only 的 preparing 404 不被误判为上传失败;认证、不可变冲突和 blocked/yanked 不作为成功重试。
  • 每个已选择候选都验证全部公开文件,包括已有 MF 关联和 manifest 未直接列出的传递 chunk;历史发行仅在新 run 选择时明确 no-op。
  • 更新命名、运行与恢复说明;生产 token 仍只进入 publish job,不引入新运行时依赖或跨 run 发布框架。

验证

  • pnpm checknode --test scripts/test-extension-publication.mjs、actionlint 1.7.12、git diff --check 通过。
  • 新增单个 HTTP 故障注入回归:上传503、publish对象未就绪409、原ZIP恢复、已有候选字节验证、篡改拒绝、不可变冲突不重试、失配候选零写入。
  • 真实隔离 Uvicorn Registry + PostgreSQL17 + Moto,使用 Mail44/Twitter47文件:上传实际提交后模拟503、MF-only公共404、公开验证中断后恢复、修改本地重建产物后仍验证原ZIP;两份ZIP各只上传一次,重复恢复仍全量验证。
  • Actions真实artifact转移由合并后的正常main run验证;本地检查不冒充远端发布执行证据。不会为验收制造新的公开版本或重发已发布版本。

风险与回滚

只改变发布编排和验证,不改变运行时/Registry协议。保留同run候选是恢复前提;未完成发行不能删除其artifact或用新build覆盖已准备来源。出现问题时保留候选、停止本次发布并调查;通过后续PR回退代码,不覆盖已公开字节。GitHub创建Version PR还依赖仓库create/approve组合开关(工作流不执行review批准),默认token只读及分支保护保持不变。

交付与依赖

base为当前main,无stacked父/子PR。配套 ext-reg #40 优化上传/发布前对象检查并增加分段日志;两个修复保持现有协议,可以独立合并。client-web合并会触发正常main发布/Pages流程。Core #110、Docs #28不属于本次合并。

- 保存并复用同次运行的精确发布候选,避免重建替代原始字节
- 对未知上传结果有限确认,恢复后验证完整公开 snapshot
- 统一 first-party 发布命名并补充 HTTP 恢复回归与运行说明

This branch was successfully deployed

1 active deployment
preview b2127181 Deployed Sep 20, 2026 by xiaoland via Retire exact Pages preview #95
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