呵呵,因为jfrog在中文搜索里还没有人实践过,经过一番深入研究后发现了一种方法。
jfrog artifactory是一款二进制存储管理工具,用来管理构建工具(如:maven、gradle)等所依赖的二进制仓库,以方便管理第三方库和发布目标版本库,从而提高软件开发效率。它提供大量的插件以利于和不同工具之间的整合,内部使用权限管理更加安全,并支持高并发等等特性。
jfrog的功能有很多,只是没有相关的中文参考,可以在CLI for JFrog Artifactory - JFrog CLI - JFrog Wiki使用手册网站上查找自己需要的功能。
一.
基本的jfrog删除命令 :
./jfrog rt del "fan_test/FOA/" --url="http://xa.artifactory..com.cn/artifactory/" --user=XXXX--password=XXXXXX
--删除命令;
替换对应参数值,其它不变:
URL:制品库对应服务地址,一般为以下其中一个:
https://artnj..com.cn/artifactory/
https://artsz..com.cn/artifactory/
https://artxa..com.cn/artifactory/
https://artnf..com.cn/artifactory/
库名:
repo=aiop-snapshot-generic
用户名:
user=admin
密码:
password=***
(使用的时候一定要注意命令的格式是要标准的,否则会报错)
二.
当想要对几千个文件进行删除的时候就会发现这项工作不能一条一条命令的完成。jfrog提供了一种编写json文件规范的执行命令形式来提供了一种对大批量文件进行操作的功能。
例如: 删除-cmcc-snapshot-generic库中的文件。 删除的对象: 所有创建时间相对于现在的时间的超过100天的库文件。
实现过程如下 :
#touch template.spec
#vi template.spec:
{
"files": [
{
"aql": {
"items.find": {
"repo": {"$eq":"-cmcc-snapshot-generic"}, #库名repo换成自己的库名
#"path": {"$match":"_cmdc"}, #路径换成自己匹配的路径目录
"$or": [
{
"$and": [
{
"created": { "$before":"100d" } #100天前
}
]
}
]
}
}
}
]
}
#./jfrog rt del --spec template.spec --url="https://artnj.com.cn/artifactory" --user=1030 --password=********* --dry-run
(
替换对应参数值,其它不变:
URL:制品库对应服务地址,一般为以下其中一个:
https://artnj..com.cn/artifactory/
https://artsz..com.cn/artifactory/
https://artxa..com.cn/artifactory/
https://artnf.zte.com.cn/artifactory/
库名:
repo=aiop-snapshot-generic
用户名:
user=admin
密码:
password=***
)
实现结果如下 :
最后删除成功会返回一个status:success的结构体。
三. jfrog的这种功能还可以用于增删改查,管理者根据自己的需求编写自己的spec结构实现此功能。参考如下:
官方网站 :CLI for JFrog Artifactory - JFrog CLI - JFrog Wiki
jfrog --spec 命令的使用
jfrog : 使用文件规范-UsingFileSpecs
要实现复杂的文件操作,可能需要多个 CLI 命令。例如,可能需要将几组不同的文件上传到不同的存储库。为了简化这些复杂操作的实现,可以使用 JFrog Artifactory 使用 选项替换内联命令参数和选项来应用 JFrog CLI 下载、 上传、 移动、复制 和 删除命令 --spec。同样,可以创建和更新版软件包通过提供 --spec命令选项。每个命令都使用 JSON 格式的文件规范数组,并具有如下部分所述的相应架构。请注意,如果使用内联选项和文件规范发出这些命令中的任何一个,则内联选项会覆盖文件规范中指定的对应项。
文件规范架构
删除命令的文件规范架构如下:
{
"files": [
{
"pattern" or "aql": "[Mandatory]",
"props": "[Optional]",
"excludeProps": "[Optional]",
"recursive": "[Optional, Default: 'true']",
"exclusions": ["[Optional, Applicable only when 'pattern' is specified]"],
"archiveEntries": "[Optional]",
"build": "[Optional]",
"bundle": "[Optional]",
"sortBy" : ["[Optional]"],
"sortOrder": "[Optional, Default: 'asc']",
"limit": [Optional],
"offset": [Optional]
}
]
}
Search, Set-Props and Delete Commands Spec Schema
The file spec schema for the search and delete commands are as follows:
{ "files": [ { "pattern" or "aql": "[Mandatory]", "props": "[Optional]", "excludeProps": "[Optional]", "recursive": "[Optional, Default: 'true']", "exclusions": ["[Optional, Applicable only when 'pattern' is specified]"], "archiveEntries": "[Optional]", "build": "[Optional]", "bundle": "[Optional]", "sortBy" : ["[Optional]"], "sortOrder": "[Optional, Default: 'asc']", "limit": [Optional], "offset": [Optional] } ] } |
以下文件规范查找符合以下条件的所有文件夹:
1. 它们位于 my-repo 存储库下。
2. 它们位于名称与 abc-*-xyz 匹配的文件夹中,位于存储库的根目录。
3. 他们的名字匹配ver_*
4. 它们是在 7 天前创建的。
{ "files": [ { "aql": { "items.find": { "repo": "myrepo", "path": {"$match":"abc-*-xyz"}, "name": {"$match":"ver_*"}, "type": "folder", "$or": [ { "$and": [ { "created": { "$before":"7d" } } ] } ] } } } ] } |