构建与制品管理58 条

Artifactory 要点

企业级制品平台:多格式支持、虚拟仓库聚合、基于元数据的检索与提升(promotion),以及跨站点复制。

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

Artifactory 是什么

JFrog Artifactory 是企业级制品平台:一个系统托管 Maven、npm、Docker、Generic 等多种格式,用 local/remote/virtual 三类仓库统一出口,配套基于元数据的检索、提升(promotion)与跨站点复制。build-info 把制品与其依赖、构建号关联,回答「这个版本当时用了哪些依赖」这类追溯问题。选型时常见的比较维度:多格式覆盖度、与既有 CI 的原生集成、跨站点复制能力以及权限模型粒度。

基本信息

适用平台规模化的制品管理:多语言、多团队、多机房
核心模型local(本地)/ remote(代理上游)/ virtual(聚合入口)三类仓库
提升REST API 的 promote(含复制与移动语义)
分发replication 支持推/拉复制,多站点加速拉取

典型使用场景

  • 依赖治理:remote 仓库代理上游并缓存,构建统一走 virtual 入口
  • 发布晋级:测试通过的制品从 staging 提升到 release 仓库,位置即状态
  • 依赖追溯:build-info 记录某次构建消费的全部依赖与版本
  • 多机房分发:复制策略让各地构建从就近站点拉取
  • 归档留存:release 仓库设置保留规则,旧版本按策略归档
  • 合规留存:按监管要求保留指定年限的制品与构建信息,检索按元数据过滤

REST 提升示例

REST 提升示例
curl -u user:pass -X POST \
  https://artifactory.example.com/api/build/promote/app-build/42 \
  -H 'Content-Type: application/json' \
  -d '{"status":"released","targetRepo":"libs-release-local"}'  # 提升到发布仓库
# 上传 build-info:PUT /api/build,发布本次构建的依赖快照

仓库类型对照

类型作用典型用法
local存放自有制品release / snapshot / staging 分库
remote代理上游仓库并缓存代理中央仓库、npmjs 等上游
virtual聚合多个仓库为单一入口构建统一配置它,屏蔽仓库结构变化
build-info 是排障利器:线上依赖冲突时,直接查到该构建版本消费的依赖清单,比翻配置推断可靠得多。
权限建议仓库级加路径级组合:发布路径只允许发布账号写、其余只读,读写分离之后再谈共享。
迁移预演很重要:大规模迁移前用复制或导出导入工具先跑通流程,路径通配符与权限差异是最常见的坑。

易错点

  • 虚拟仓库未限制远程候选:依赖解析顺序不透明,审计困难
  • 复制链路无监控:跨站延迟导致目标站拉取旧版本,应设置同步告警
  • 匿名读权限放开过大:内部包可被任意匿名拉取,应收紧为最小可见范围
  • 保留策略一刀切:snapshot 与 release 用同一规则,要么磁盘失控要么误删历史版本
  • 构建配置硬编码单站点地址:站点故障时无法切换,构建统一走虚拟入口、配置留出可替换空间

数据来源与参考

  • JFrog Artifactory 文档(Build Integration / Promotion)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌