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 是排障利器:线上依赖冲突时,直接查到该构建版本消费的依赖清单,比翻配置推断可靠得多。
权限建议仓库级加路径级组合:发布路径只允许发布账号写、其余只读,读写分离之后再谈共享。
迁移预演很重要:大规模迁移前用复制或导出导入工具先跑通流程,路径通配符与权限差异是最常见的坑。