如何从神器中删除与模式匹配的所有工件(例如,超过6个月)?
使用curl或go库
答案 0 :(得分:5)
jfrog cli采用'spec file'来搜索工件。请参阅此处查看information on jfrog spec files
jfrog cli documentation is available here:
创建一个aql搜索查询以查找所需的工件:
如果您的aql搜索语法如下:
/tmp/foo.query
items.find(
{
"repo":"foobar",
"modified" : { "$lt" : "2016-10-18T21:26:52.000Z" }
}
)
你可以找到这样的工件:
curl -X POST -u admin:<api_key> https://artifactory.example.com/artifactory/api/search/aql -T foo.query
那么spec文件将是
/tmp/foo.spec
{
"files": [
{
"aql": {
"items.find": {
"repo": "foobar",
"$or": [
{
"$and": [
{
"modified": { "$lt": "2016-10-18T21:26:52.000Z"}
}
]
}
]
}
}
}
]
}
你会像这样使用golang库:
jfrog rt del --spec /tmp/foo.spec --dry-run
您也可以执行相对日期
,而不是修改"modified": { "$before":"6mo" }
如果您收到错误405方法不允许,请验证您的api或密码是否正确,并尝试使用PUT而不是POST
答案 1 :(得分:2)
安装jforg cli
配置jfrog cli进行API调用
jfrog rt c Artifactory --url=https://<>url/artifactory --apikey=<add api key> #can generate api key from user profile
创建一个称为artifactory.spec的规范文件。您可以根据需要更改查找查询。下面的查询将
显示以下物品:
注册表-docker-staging
路径-*
下载状态= null#未下载
在6个月前创建
{
"files": [
{
"aql": {
"items.find": {
"repo": {"$eq":"docker-staging"},
"path": {"$match":"*"},
"name": {"$match":"*"},
"stat.downloads":{"$eq":null},
"$or": [
{
"$and": [
{
"created": { "$before":"6mo" }
}
]
}
]
}
}
}
]
您可以搜索要删除的软件包
jfrog rt s --spec artifactory.spec
运行删除命令
jfrog rt del --spec artifactory.spec