首页 > 解决方案 > 删除后包含工件的 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*"}                    
                    }]
                }]
            }
        }
    }]
}

标签: artifactoryjfrog-cli

解决方案


在 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 存储库中,您可以找到许多有用插件的示例,例如这个用于清理工件的插件。如插件页面中所述,可以将清理过程设置为作为计划作业自动运行。


推荐阅读