当前位置: 首页 > news >正文

JFrog Artifactory 制品库命令行操作指南

问题提出背景
在devops过程中,很多企业采用jfrog公司的JFrog Artifactory来管理研发流程中各个阶段的制品,
所以如何熟练使用制品库配套的工具来赋能研发流程特别重要,可以显著提高研发和沟通效率。

本文详细讲解使用 jfrog CLIcurl 工具对 JFrog Artifactory 进行常用操作的命令示例,涵盖文件上传、下载、删除、搜索、移动和复制等功能。所有命令均需提前配置认证信息。


一、环境准备
1. 安装与认证
  • 安装 jfrog CLI

    # Linux
    curl -fL https://install-cli.jfrog.io | sh# macOS (Homebrew)
    brew install jfrog-cli
    
  • 配置认证

    # 交互式配置(按提示输入 Artifactory URL、用户名、密码/API Key)
    jfrog c add my-artifactory# 或通过环境变量
    export JFROG_URL="https://<ARTIFACTORY_URL>"
    export JFROG_USER="<USERNAME>"
    export JFROG_PASSWORD="<API_KEY>"
    
2. 认证信息(curl 使用)
# 使用基本认证(用户名:密码)
AUTH="-u $USER:$PASSWORD"# 或使用 API Key(推荐)
AUTH="-H 'X-JFrog-Art-Api: <API_KEY>'"

二、常用操作命令
1. 上传文件
  • jfrog CLI

    # 上传本地文件到指定仓库路径
    jfrog rt upload local-file.txt my-repo/path/to/remote-file.txt# 批量上传目录内容
    jfrog rt upload "build/*.jar" my-repo/libs-release/
    
  • curl

    # 上传文件到指定仓库路径
    curl $AUTH -XPUT "https://<ARTIFACTORY_URL>/artifactory/my-repo/path/to/remote-file.txt" -T local-file.txt
    

2. 下载文件
  • jfrog CLI

    # 下载单个文件
    jfrog rt download my-repo/path/to/remote-file.txt ./downloads/# 批量下载(支持通配符)
    jfrog rt download "my-repo/libs-release/*.jar" ./libs/
    
  • curl

    # 下载文件到本地
    curl $AUTH -O "https://<ARTIFACTORY_URL>/artifactory/my-repo/path/to/remote-file.txt"
    

3. 删除文件
  • jfrog CLI

    # 删除单个文件
    jfrog rt delete my-repo/path/to/remote-file.txt# 批量删除(谨慎操作!)
    jfrog rt delete "my-repo/temp-builds/*.tmp"
    
  • curl

    # 删除文件
    curl $AUTH -XDELETE "https://<ARTIFACTORY_URL>/artifactory/my-repo/path/to/remote-file.txt"
    

4. 搜索文件
  • jfrog CLI

    # 按名称搜索
    jfrog rt search "my-repo/path/to/*.jar"# 按属性搜索(如 build=123)
    jfrog rt search --props "build=123" "my-repo/"
    
  • curl

    # 搜索文件名匹配项
    curl $AUTH "https://<ARTIFACTORY_URL>/artifactory/api/search/artifact?name=*.jar&repos=my-repo"# 搜索属性匹配项
    curl $AUTH -XPOST "https://<ARTIFACTORY_URL>/artifactory/api/search/prop?build=123" -H "Content-Type: text/plain"
    

5. 移动/重命名文件
  • jfrog CLI

    # 移动文件到新路径
    jfrog rt mv my-repo/path/file.txt my-repo/new-path/file.txt# 批量移动(通配符)
    jfrog rt mv "my-repo/temp/*.log" my-repo/archive/
    
  • curl

    # 移动文件(需指定目标路径)
    curl $AUTH -XPOST "https://<ARTIFACTORY_URL>/artifactory/api/move/my-repo/path/file.txt?to=my-repo/new-path/file.txt"
    

6. 复制文件
  • jfrog CLI

    # 复制文件到新路径
    jfrog rt cp my-repo/path/file.txt my-repo/backup/file.txt# 批量复制
    jfrog rt cp "my-repo/builds/*.war" my-repo/releases/
    
  • curl

    # 复制文件
    curl $AUTH -XPOST "https://<ARTIFACTORY_URL>/artifactory/api/copy/my-repo/path/file.txt?to=my-repo/backup/file.txt"
    

7. 设置文件属性
  • jfrog CLI

    # 添加或更新属性
    jfrog rt sp "my-repo/path/file.txt" "env=prod;version=1.0"
    
  • curl

    # 设置属性
    curl $AUTH -XPUT "https://<ARTIFACTORY_URL>/artifactory/api/storage/my-repo/path/file.txt?properties=env=prod|version=1.0"
    

三、高级功能
1. 批量操作
# 使用 AQL(Artifactory Query Language)批量删除 30 天前的文件
jfrog rt delete --spec='{"files": [{"aql": {"items.find": {"repo": "my-repo","path": "temp","created": { "$before": "30d" }}}}]
}'
2. 生成下载链接(带过期时间)
# 生成 24 小时内有效的下载链接
curl $AUTH -XPOST "https://<ARTIFACTORY_URL>/artifactory/api/security/token" -d "username=user" -d "expires_in=86400" -d "scope=member-of-groups:readers"

四、工具对比与选型建议
操作类型推荐工具理由
简单上传/下载jfrog CLI语法简洁,自动处理路径和仓库逻辑
复杂查询curl + AQL灵活构造高级查询条件
批量删除/移动jfrog CLI内置 --spec 支持 JSON 描述批量操作
集成脚本开发curl无需安装额外工具,适合轻量化调用

五、注意事项
  1. 权限控制:确保执行用户具有对应仓库的读写权限。
  2. 路径规范:Artifactory 路径格式为 <仓库名>/<路径>/<文件名>
  3. 安全实践
    • 优先使用 API Key 替代密码(用户界面中生成:Profile → Edit Profile → Generate API Key)。
    • 敏感信息(如 API Key)通过环境变量传递,避免硬编码在脚本中。
  4. 日志审计:关键操作建议启用 Artifactory 的访问日志(Admin → Logs → Access)。

通过以上命令组合,可以高效管理 Artifactory 制品库资源。建议结合 CI/CD 流水线(如 Jenkins、GitLab CI)实现自动化发布流程。

相关文章:

  • 模数转换【1】AD7699
  • MySQL知识点讲解
  • 【软件工程】软件测试基础知识
  • MYDB仿MySQL手写数据库项目总结
  • 【Maven】项目管理工具
  • 深度学习-全连接神经网络-2
  • Rust: 从内存地址信息看内存布局
  • 问题 | RAIM + LSTM 你怎么看???
  • Day5-UFS总结
  • WPS科大讯飞定制版 11.4.1.5| 无广告,省电和降低占用,可与普通版本共存
  • stm32week12
  • 如何在量子计算时代保障 Sui 的安全性
  • (14)VTK C++开发示例 --- 将点投影到平面上
  • 中通 Redis 集群从 VM 迁移至 PVE:技术差异、PVE 优劣势及应用场景深度解析
  • 【GIT】为什么要变基下拉,变基下拉失败,提示没有暂存如何解决?
  • 使用QEMU(8.2.10)调试ARM64 Linux内核6.6.30
  • 【STM32单片机】#10.5 串口数据包
  • 50道SQL经典练习题
  • 如何通过API获取淘宝评论?实战讲解
  • JVM面试题学习
  • 新质生产力的宜昌解法:抢滩“高智绿”新赛道,化工产品一克卖数千元
  • 西安雁塔区委书记王征拟任市领导班子副职,曾从浙江跨省调任陕西
  • 中国旅游日主题月期间,东航将准备超51.9万套特惠机票
  • 经济日报:“关税讹诈”拦不住中国制造升级
  • 揭晓!人形机器人半马完赛奖+专项奖发布
  • “80后”辽宁石油化工大学副校长杨占旭已任阜新市领导