使用JFrog CLI将虚拟Artifactory依赖迁移至测试/预发布本地库
依赖推广至测试/预发布Artifactory仓库的JFrog实现流程
一、先搞定构建依赖的追踪
你之前用的jf rt go build是旧语法,先换成新语法并生成构建记录,这样能精准定位要推广的依赖:
jf go build --build-name=go-app-build --build-number=1
执行后,JFrog会自动把本次构建用到的所有依赖(就是你看到的rsc.io/quote、rsc.io/sampler这些)记录到构建信息里。
二、推荐方式:用构建推广(Promote)功能
构建推广是JFrog的标准环境流转流程,能一键把构建关联的依赖(甚至产物)同步到目标仓库:
- 确认你的测试仓库(比如
demo-go-repo-test-local)和预发布仓库(demo-go-repo-preprod-local)已经在Artifactory中创建好。 - 执行命令推广到测试仓库:
jf rt build-promote go-app-build 1 demo-go-repo-test-local --copy-deps
- 同理,推广到预发布仓库:
jf rt build-promote go-app-build 1 demo-go-repo-preprod-local --copy-deps
参数说明:
--copy-deps:强制复制该构建关联的所有依赖到目标仓库- 怕出错的话可以先加
--dry-run做测试,或者保留默认的--overwrite=false(不会覆盖已存在的文件)
三、临时方案:直接复制依赖文件
如果不想用构建记录,也可以直接从虚拟仓库关联的缓存本地库(虚拟仓库本身是逻辑库,依赖实际存在于它关联的缓存本地库,比如demo-go-repo-cache-local)复制到目标仓库:
- 依赖在Artifactory里的路径一般是类似
rsc/io/quote/v1.5.2这种格式,对应仓库路径就是demo-go-repo-cache-local/rsc/io/quote/v1.5.2/... - 执行复制命令:
# 复制quote依赖到测试仓库 jf rt copy "demo-go-repo-cache-local/rsc/io/quote/*" demo-go-repo-test-local --recursive # 复制sampler依赖到测试仓库 jf rt copy "demo-go-repo-cache-local/rsc/io/sampler/*" demo-go-repo-test-local --recursive # 复制text依赖到测试仓库 jf rt copy "demo-go-repo-cache-local/golang.org/x/text/*" demo-go-repo-test-local --recursive
把目标仓库换成预发布仓库,重复上面的命令即可。
四、验证推广结果
- 直接登录Artifactory UI,进入测试/预发布仓库,检查对应的依赖包是否存在
- 或者用JFrog CLI快速查询:
jf rt search "demo-go-repo-test-local/rsc/io/quote/v1.5.2"
额外提醒
你的go.yaml里resolver用的是demo-go-repo-virtual虚拟仓库,它会自动把拉取的依赖缓存到关联的本地仓库,所以推广的源头是这个缓存本地库,而非虚拟仓库本身。
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

