artifactory - 删除后包含工件的 Jfrog 工件删除文件夹
问题描述
我正在使用这个规范文件来删除超过 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 个而不是全部,并且必须每隔一定时间用这个脚本删除它们
谢谢!!
不止一个回购?
{
"files": [{
"aql": {
"items.find": {
"$or": [{
"$and": [{
"repo": "repo1",
"path": "com/foo/bar",
"created": {
"$before": "3mo"
}
"type": "folder",
"name": {"$match":"20*"}
}],
"$and": [{
"repo": "repo2",
"path": "com/foo/bart",
"created": {
"$before": "3mo"
}
"type": "folder",
"name": {"$match":"20*"}
}],
"$and": [{
"repo": "repo3",
"path": "com/foo/bar",
"created": {
"$before": "3mo"
}
"type": "folder",
"name": {"$match":"20*"}
}]
}]
}
}
}]
}
解决方案
在 Artifactory 中执行此类操作的最推荐工具之一是JFrog CLI。为了删除您想要的文件和文件夹,您可以使用CLI 删除命令。连同您编写的 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 与旧的构建工件保持清洁的另一种方法是使用构建保留。此操作会删除旧构建,并且可以选择删除与已删除构建关联的工件。您可以在JFrog CLI 文档页面中阅读有关丢弃旧版本的信息。使用 JFrog CLI 的丢弃命令如下:
jfrog rt bdi <BUILD-NAME> --max-days 90 --delete-artifacts true
除了使用 JFrog CLI 删除工件和构建之外,Artifactory Pro还支持User Plugins。您可以编写自己的插件或编辑现有插件以在 Artifactory 中执行许多操作。
在User-plugins GitHub 存储库中,您可以找到许多有用插件的示例,例如这个用于清理工件的插件。如插件页面中所述,可以将清理过程设置为作为计划作业自动运行。
推荐阅读
- javascript - 在 Windows 上使用 Gulp 进行 E2E 测试编排:无法终止进程
- android - 无法从使用 count() 的 sqlite 查询中检索结果
- python - 如何创建具有权限的预定义组?
- docker - Windows:docker-compose 找不到指定的 Dockerfile
- python - 解析对 JSON 数据的 HTTP 响应
- android - 将 TextView 的文本与另一个 TextView 对齐
- ruby-on-rails - heroku ActionView::Template::Error(无法连接到服务器:没有这样的文件或目录
- android - ArrayIndexOutOfBoundException 删除单条记录
- python - 在索引之前查找子字符串的第一次出现
- json - 努力将 JSON 数据转换为 Django 模型对象实例