概述
启用差异构建
1
前往环境设置
前往 设置 > 环境 > Advanced。
2
开启开关
打开 差异构建 开关。说明为:“通过复用未更改的工作区来加快构建速度。”
3
触发构建
保存蓝图更改或点击 构建快照。如果存在有效的父构建,下一次构建将尝试以差异构建方式运行。
工作方式
1. 查找父构建
success 或 partial) ,并将其作为父构建使用。如果没有符合条件的父构建,系统会自动退回到完整构建。
2. 比较蓝图
3. 分配工作区操作
对于继承的工作区,
initialize 不会再次运行。请编写 maintenance,
确保它是自包含的,并且能在拉取最新代码后独立运行。
它可以使用父快照中已安装的工具和运行时,
但不得要求必须先立即运行 initialize,也不得依赖
initialize 先前写入 $ENVRC 的环境变量。4. 执行构建
- 继承的工作区 已预先安装好所需的工具、运行时和依赖。系统会拉取最新代码 (
git pull) ,并运行maintenance命令来更新依赖。 - 重新构建的工作区 会从头开始设置——重新克隆,并完整执行
initialize+maintenance流程。 - 已移除的工作区 的目录会被清理。
initialize (因为这些工具已存在于父镜像中) ,只运行 maintenance。
每次构建开始时,都会重置
$ENVRC,包括差异构建。
此前构建写入 $ENVRC 的环境变量和 PATH 条目
不会被继承。如果 maintenance 需要这些内容,则必须自行
进行配置。何时会改为执行完整构建
- 不存在父构建 — 首次构建,或者之前所有构建都失败了
- 组织或企业蓝图已更改 — 全局更改会影响所有工作区,因此执行一次彻底重建更稳妥
- 代码仓库顺序已更改 — 由于代码仓库的设置可能彼此依赖,重新排序会触发一次完整重建
- 父构建过旧或不兼容 — 系统会验证父构建是否可用
查看构建类型
- 前往 设置 > 环境 > 快照
- 点击历史记录中的某个构建
- Build kind 标记会显示 Differential (蓝色) 或 完整构建 (默认)
- Differential: “仅重新构建已更改的工作区;未更改的工作区将沿用上一次使用相同配置成功构建的结果”
- 完整构建: “所有工作区都会从头开始构建”
优势
手动触发完整构建
initialize 和 maintenance 步骤。
常见问题
启用差异构建会影响我的会话吗?
启用差异构建会影响我的会话吗?
不会。无论快照是如何构建的,会话始终都会从最终快照启动。唯一的区别只是构建速度。
如果差异构建生成了有问题的快照怎么办?
如果差异构建生成了有问题的快照怎么办?
在 设置 > 环境 > 快照 中固定一个先前已知正常的构建,然后触发一次完整构建,以获得干净的快照。你也可以完全禁用差异构建,改回使用完整构建。
部分构建可以作为父构建吗?
部分构建可以作为父构建吗?
可以。状态为
partial 的构建 (某些工作区成功,某些失败) 可以作为父构建。系统只会继承父构建中成功的工作区内容。
