首页/开发/CI/CD 与发布速查/可复现构建(Reproducible Build)
流水线设计54 条

可复现构建(Reproducible Build)

相同源码、相同工具链、相同环境下构建出逐字节一致的产物:让「验证过的内容」可被第三方独立复算。

CI/CD 与发布速查开发更新于 2026-10-12
干扰因素时间戳、文件顺序、绝对路径、并行随机性、依赖版本漂移
手段固定工具链版本、规范化归档、设定 SOURCE_DATE_EPOCH、锁定依赖
级别从「同机可复现」到「跨机逐字节一致」逐步达成

常见规约

常见规约
export SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)
# 归档时固定时间戳与排序
tar --sort=name --mtime=@$SOURCE_DATE_EPOCH -czf app.tar.gz dist/
语言与工具链支持程度不同:先测量可复现性现状,再逐项消除差异源。

易错点

  • 只在同一条流水线上复现:说明不了跨环境一致性,验证价值有限
  • 忽略依赖下载的非确定性:镜像源内容变化会让「同源码不同产物」

数据来源与参考

  • reproducible-builds.org
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌