Jfrog artifactory 删除包含工件的文件夹后删除它们

Jfrog artifactory delete folder of containing artifacts after remove them

我正在使用此规范文件删除超过 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 delete command。 加上你写的 FileSpec,你的命令应该是这样的:

jfrog rt del --spec <PATH-TO-SPEC-FILE>

要验证要删除的文件,您可以运行删除前的搜索命令:

jfrog rt s --spec <PATH-TO-SPEC-FILE>

或者让删除命令输出它找到的文件列表。

要删除您要求的文件夹,FileSpec 应如下所示:

{
"files": [{
    "aql": {
        "items.find": {
            "repo": "repo1",
            "path": "com/domain/name",
            "created": {
                 "$before": "3mo"
            },
            "type":"folder",
            "name": {"$match":"20*"}
        }
    }
}]}

另一种使您的 Artifactory 与旧 build 工件保持清洁的方法是使用构建保留。此操作会删除旧的 builds,并且可以选择删除与已删除构建关联的工件。您可以在 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, you can find examples for many useful plugins, such as this plugin for cleaning artifacts。 正如插件页面中所解释的,清理进程可以设置为 运行 自动作为计划作业。