首页/开发/CI/CD 与发布速查/一次构建、多环境部署(Build Once, Deploy Many)
流水线设计54 条

一次构建、多环境部署(Build Once, Deploy Many)

同一份不可变制品从测试环境一路晋级到生产,避免「每环境重新构建」带来的行为漂移与不可回滚。

CI/CD 与发布速查开发更新于 2026-10-12
原则制品在验证过的那个二进制/镜像上原样晋级
落地按摘要(digest)引用镜像,用同一构件的晋级而非重建
收益回滚只是把旧制品重新部署,验证有据可依

按摘要晋级

按摘要晋级
docker build -t registry.example.com/app:1.8.0 .
docker push registry.example.com/app:1.8.0
# 各环境引用同一 digest(推荐),而不是各环境重新 build
docker pull registry.example.com/app@sha256:<digest>
若生产环境重新编译或重新打包,测试结果不再代表生产运行内容。

易错点

  • 生产构建参数不同(如构建参数写死环境值)导致同一版本不同行为:环境差异应放到运行时配置
  • 用浮动标签 latest 晋级:新旧环境引用的实际内容可能不一致,回滚不可靠

数据来源与参考

  • Humble & Farley《Continuous Delivery》
  • Docker Docs《Registry》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌