概述
可复现构建的价值在于能证明产物确实来自经评审的源码。在两个独立环境构建同一修订并比较哈希、逐一修复时间戳、路径、顺序与并行等非确定来源、把验证纳入发布流程,可让产物来源可被证明。
关键步骤
- 在两个独立环境构建同一修订。
- 比较产物哈希并列出差异。
- 修复非确定性来源:时间戳、路径、顺序、并行。
- 记录验证并纳入发布流程。
验证
- 两环境产物哈希一致。
- 比较是发布流程的一部分。
- 不可消除的差异有文档与计划。
- 验证运行可留存。
决策点
时间戳与路径应修复,不可消除的差异应文档化并给出计划;关键产物应每次发布都验证。
适用范围
本条目围绕「可复现构建验证工作流」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
建议在正式环境落地前先在预发或隔离环境演练一遍,把关键观测指标与负责人一并记录,确保出现异常时能快速定位并恢复。
build() { SOURCE_DATE_EPOCH=1700000000 ./build.sh > out/$1.tar; }
build env1
build env2
sha256sum out/env1.tar out/env2.tar