JFrog Artifactory 制品库命令行操作指南
问题提出背景
在devops过程中,很多企业采用jfrog公司的JFrog Artifactory来管理研发流程中各个阶段的制品,
所以如何熟练使用制品库配套的工具来赋能研发流程特别重要,可以显著提高研发和沟通效率。
本文详细讲解使用 jfrog
CLI 和 curl
工具对 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 | 无需安装额外工具,适合轻量化调用 |
五、注意事项
- 权限控制:确保执行用户具有对应仓库的读写权限。
- 路径规范:Artifactory 路径格式为
<仓库名>/<路径>/<文件名>
。 - 安全实践:
- 优先使用 API Key 替代密码(用户界面中生成:
Profile → Edit Profile → Generate API Key
)。 - 敏感信息(如 API Key)通过环境变量传递,避免硬编码在脚本中。
- 优先使用 API Key 替代密码(用户界面中生成:
- 日志审计:关键操作建议启用 Artifactory 的访问日志(Admin → Logs → Access)。
通过以上命令组合,可以高效管理 Artifactory 制品库资源。建议结合 CI/CD 流水线(如 Jenkins、GitLab CI)实现自动化发布流程。