我正在使用此规范文件删除3个月以上的旧工件。
{
"files": [{
"aql": {
"items.find": {
"$or": [{
"$and": [{
"repo": "repo1",
"created": {
"$before": "3mo"
}
}],
"$and": [{
"repo": "repo2",
"created": {
"$before": "3mo"
}
}],
"$and": [{
"repo": "repo3",
"created": {
"$before": "3mo"
}
}]
}]
}
}
}]
}
但是我想删除以以下内容开头的孔文件夹:“ 2019 *”,如图所示,其中包含工件,而不仅仅是文件夹中的工件。
我尝试了以下操作,但是没有用:
"items.find": {
"repo": "repo1",
"path": "com/domain/name",
"name": {"$match":"20*"},
"type": "folder",
说没有伪像。
Jfrog还可以删除除最后2个以外的所有工件吗?只想保留最后2个而不是全部保留,并且必须每隔一定时间使用此脚本删除它们
谢谢!
答案 0 :(得分:4)
JFrog CLI是在Artifactory中执行此类操作的最推荐工具之一。 为了删除所需的文件和文件夹,您可以使用CLI delete command。 与您编写的FileSpec一起,命令应类似于:
jfrog rt del --spec <PATH-TO-SPEC-FILE>
要验证要删除的文件,可以在删除之前运行搜索命令:
jfrog rt s --spec <PATH-TO-SPEC-FILE>
或让delete命令输出找到的文件列表。
要删除您要求的文件夹,FileSpec应该如下所示:
{
"files": [{
"aql": {
"items.find": {
"repo": "repo1",
"path": "com/domain/name",
"created": {
"$before": "3mo"
},
"type":"folder",
"name": {"$match":"20*"}
}
}
}]}
一种用于保持Artifactory与旧的 build 工件保持清洁的不同方法是使用build-retention。该操作将删除旧的内部版本,并且可以选择删除与已删除内部版本相关的工件。您可以在JFrog CLI documentation page中了解有关丢弃旧版本的信息。 使用JFrog CLI的放弃命令将类似于:
jfrog rt bdi <BUILD-NAME> --max-days 90 --delete-artifacts true
除了使用JFrog CLI删除工件和构建之外, Artifactory Pro 支持User Plugins。您可以编写自己的插件,也可以编辑现有插件以在Artifactory中执行许多操作。
在User-plugins GitHub repository中,您可以找到许多有用的插件的示例,例如this plugin for cleaning artifacts。 如插件页面中所述,可以将清理过程设置为作为计划作业自动运行。