如何使用JFrog CLI部署单个文件至Artifactory及快照清理疑问
我来帮你解决这两个Artifactory相关的问题,都是日常使用中很常见的场景:
你遇到的是Artifactory的默认行为:Max Unique Snapshots的清理逻辑仅在新快照部署时触发,这样设计是为了避免垃圾回收(GC)在日常运行中占用过多系统资源,影响正常业务。如果想要立刻清理掉超出5个数量限制的旧快照,有两种实用方法:
手动触发垃圾回收:
用JFrog CLI直接执行GC命令,快速触发清理操作:jf rt gc --server-id=<你的Artifactory服务器ID>你也可以通过Artifactory UI操作:进入「Admin > Advanced > Garbage Collection」,选择需要清理的仓库或者执行全局GC,点击「Run Garbage Collection」即可。注意GC操作会消耗较多资源,建议在业务低峰期执行。
配置定期自动GC(可选):
如果你希望GC能定期自动清理旧快照,而不是只依赖新部署触发,可以通过Artifactory的系统配置或API设置定期GC任务。不过要注意平衡资源消耗,过于频繁的GC可能影响Artifactory的性能。
使用jf rt upload命令就能轻松完成单个文件的上传,基本语法如下:
jf rt upload "<本地文件的绝对/相对路径>" "<Artifactory内的目标路径>" --repo=<目标仓库名称>
举个实际使用的例子:假设你要把本地dist/app-2.3.0-SNAPSHOT.zip文件上传到Artifactory的snapshots-local仓库下的com/myteam/tools/路径,命令就是:
jf rt upload "dist/app-2.3.0-SNAPSHOT.zip" "com/myteam/tools/" --repo=snapshots-local
如果不想保留本地的目录结构,直接把文件放到仓库的指定路径(比如根目录),可以加上--flat=true参数:
jf rt upload "dist/app-2.3.0-SNAPSHOT.zip" "/" --repo=snapshots-local --flat=true
另外,你还可以根据需求添加额外参数,比如--props="buildId=456,env=test"给文件附加元数据,或者--overwrite=true强制覆盖仓库中已存在的同名文件。
内容的提问来源于stack exchange,提问作者anupshrestha

