配置管理的制品与依赖管理是什么
制品与依赖管理回答「这次部署究竟用了哪个版本的软件与依赖」。要点有三:制品必须不可变且可寻址,用内容哈希或不可变标识指代,避免使用会漂移的标签;依赖必须可复现,锁文件固定版本,构建与运行使用同一份依赖清单;来源必须可信,从受控仓库获取并校验哈希或签名。做到这三点,回滚才有确定性,排错时也不必猜「是不是依赖变了」。
基本信息
| 制品标识 | 内容哈希或不可变标识,避免漂移标签 |
|---|---|
| 依赖复现 | 锁文件与依赖清单,构建与运行一致 |
| 可信来源 | 受控仓库 + 哈希或签名校验 |
| 归档策略 | 明确保留策略,回滚目标必须仍可用 |
| 回滚单位 | 以制品版本为单位回退 |
典型使用场景
- 生产部署只允许使用经过构建流程产出的制品
- 回滚时按制品版本回退而不是现场重新构建
- 依赖从受控源获取以降低供应链风险
- 用同一制品在测试与生产验证,减少环境差异
- 归档制品以满足合规留存要求
可复现要点示意
可复现要点示意
# 制品:以内容哈希标识,标签只当别名
# 依赖:锁定到具体版本,锁文件随代码提交
# 来源:仅从受控仓库获取,校验哈希或签名
# 保留:明确保留策略,回滚目标必须仍可取用
# 记录:部署记录同时写入制品哈希与依赖清单哈希项目与要求
| 项目 | 要求 | 缺失后果 |
|---|---|---|
| 制品标识 | 不可变、内容寻址 | 无法确定线上实际运行哪个版本 |
| 依赖锁定 | 锁文件固定版本 | 同类环境行为不一致,难以复现 |
| 来源校验 | 受控仓库与哈希校验 | 引入被替换或篡改的依赖 |
| 归档保留 | 保留策略明确 | 需要回滚时制品已被清理 |
可复现性不只是版本号问题:构建环境、编译参数与依赖解析顺序都会影响产物。记录制品的内容哈希,比记录一个可能被覆盖的版本号更能保证一致。
使用会漂移的标签会破坏回滚确定性:同一标签在不同时间可能拉到不同内容,回滚动作反而引入新的未知变更。生产应固定到不可变标识。