首页/开发/CI/CD 与发布速查/制品库类型与布局
构建与制品管理58 条

制品库类型与布局

制品库按用途分层:代理缓存(proxy)、私有托管(hosted)、聚合组(group/虚拟仓库),配合快照与发布两条通道。

CI/CD 与发布速查开发更新于 2026-10-13

制品库类型与布局是什么

制品库(Repository Manager / Registry)按用途分三层:代理缓存(proxy)向上游公网源拉取并缓存,私有托管(hosted)存放自研制品,聚合组(group / virtual)对外暴露统一入口、按顺序聚合多个仓库。布局时的关键决策是通道分离:宿主仓库拆成「快照」与「发布」两条,快照允许被覆盖、供开发迭代;发布通道开启不可变策略、供生产消费。这样清理策略与审计口径才能按通道各自成立。

基本信息

proxy 代理缓存公网源(npm、pypi、maven 中央仓等),加速并降低外网依赖
hosted 托管存放自研制品:快照与发布分开
group/virtual对外暴露统一入口,按顺序聚合多个仓库
通道设计快照通道可覆盖、发布通道不可变
典型产品Nexus、Artifactory、GitLab Registry 等

典型使用场景

  • 内网加速依赖拉取:代理仓库缓存公网包,构建不再等慢速外网。
  • 统一依赖出口审计:所有出网依赖都经过代理仓库,可统计、可限制来源。
  • 私有制品分发:内部库与二进制经托管仓库发布,权限与命名规范集中管理。
  • 依赖混淆防护:内部包与公网同名时,由聚合顺序与命名空间规则决定解析来源。
  • 快照与发布隔离:开发快照不影响正式发布通道的不可变性。

布局示意

布局示意
group-public = [proxy-npm, proxy-pypi, hosted-releases]
hosted-snapshots(开发快照, 允许覆盖)
hosted-releases(正式发布, 开启不可变策略)
# 发布只写 hosted-releases; 依赖解析统一读 group-public

三层角色对比

类型内容来源典型用途
proxy公网上游缓存加速、审计出网依赖
hosted自研制品快照与发布分发
group聚合多个仓库对外统一入口
依赖解析统一指向 group 地址:既防依赖混淆,也便于统一审计出网依赖。
快照与发布要放在两个宿主仓库:混放会让清理策略无法区分(正式制品有被误删的风险),审计时也分不清哪些版本承诺过稳定性。

易错点

  • 快照与发布混放同一仓库:清理策略难以区分,正式制品有被误删风险。
  • 代理仓库未配置上游白名单:内网可被利用拉取任意包,配置来源限制。
  • 依赖混淆风险:内部包与公网重名时 group 解析顺序决定取哪个来源,定期核对顺序并优先解析内部仓库。
  • 发布制品没有不可变策略:已发布版本可被覆盖,破坏可复现性,对发布通道开启禁止重写。
  • 解析地址散落各处:部分构建直连公网、部分走 group,审计口径失效,统一配置再收紧网络策略。

数据来源与参考

  • Sonatype Nexus 文档(Repository Manager 概念)
  • JFrog Artifactory 文档(Repositories)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌