跳转到内容

发布与回滚

Prepare changes 是低风险边界。它把源码、草稿、引用资源、Site 配置和 Git revision 冻结为不可变 ChangeSet,不会构建、上传、清缓存、推送 Git 或更改公开 Site。

审查后,应用 ChangeSet 并创建一条消息和精确文件选择均可编辑的本地提交。无关的 staged 或工作树变更会被保留。远程发布要求已提交 ChangeSet 和另一句确认短语。

发布从记录提交对应的 detached worktree 构建,绝不使用当前活动文件。时间线依次经过预检、构建、规划、资源上传、页面上传、缓存失效和公网验证。release 与 event 记录在执行前持久化,重启后因此拥有确定性的恢复数据。

每个生成文件以可移植路径、内容哈希、字节大小、内容类型和发布阶段表示。发布器将新清单与最后一份已验证清单比较:

  • 哈希未变则跳过;
  • 先上传新增或变更的不可变资源;
  • 随后上传 HTML、索引、feed、sitemap 和发布标记;
  • 删除仅限明确受管目标;
  • 受保护旧前缀不属于应用所有。

远程对象 Provider 应使用保留清单,不应为每个输出文件发出 HEAD 请求。

不要对已有内容的 bucket 或 bucket 根执行普通首次发布。Provider 支持采用基线时,Studio 要求明确的管理员确认,盘点并哈希现有公开字节,只存储自身标记和发布状态;采用过程不会改写网站。

下一次发布会基于已验证基线生成真实差异。如果标记已经存在,采用会停止;此时必须恢复保留的发布状态,而不是覆盖历史。

只有 Provider 操作全部完成且公网验证器观察到预期发布标记,发布才算成功。缓存接受请求并不证明访客能获取新版本。

取消采用协作机制,在安全修改边界之间检查。目标修改开始后若发布失败,自动回滚会恢复此前已验证字节和标记。手动回滚是在线发布操作:它恢复生产,但不会清除作者当前源码编辑。

新的生产垂直链路通过暂存和回滚关卡前,始终保留此前部署机制。