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

Cha*_*fot 0 artifactory jfrog-cli

我正在使用此规范文件删除超过 3 个月的旧工件。

{
    "files": [{
        "aql": {
            "items.find": {
                "$or": [{
                    "$and": [{
                        "repo": "repo1",
                        "created": {
                            "$before": "3mo"
                        }
                    }],
                    "$and": [{
                        "repo": "repo2",
                        "created": {
                            "$before": "3mo"
                        }
                    }],
                    "$and": [{
                        "repo": "repo3",
                        "created": {
                            "$before": "3mo"
                        }
                    }]
                }]
            }
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)

但我想删除以“2019*”开头的孔文件夹,如包含工件的图片中所示,而不仅仅是文件夹中的工件。

在此处输入图片说明

我尝试了以下但我没有工作:

 "items.find": {
          "repo": "repo1",
          "path": "com/domain/name",
          "name": {"$match":"20*"},
          "type": "folder",
Run Code Online (Sandbox Code Playgroud)

说没有神器建立。

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*"}                    
                    }]
                }]
            }
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*ity 7

在 Artifactory 中执行此类操作的最推荐工具之一是JFrog CLI。为了删除您想要的文件和文件夹,您可以使用CLI 删除命令。连同你写的 FileSpec,你的命令应该是这样的:

jfrog rt del --spec <PATH-TO-SPEC-FILE>
Run Code Online (Sandbox Code Playgroud)

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

jfrog rt s --spec <PATH-TO-SPEC-FILE>
Run Code Online (Sandbox Code Playgroud)

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

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

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

保持 Artifactory 免受旧构建工件影响的另一种方法是使用构建保留。此操作会删除旧构建,并且可以选择删除与已删除构建关联的工件。您可以在JFrog CLI 文档页面阅读有关丢弃旧版本的信息。JFrog CLI 的丢弃命令如下所示:

jfrog rt bdi <BUILD-NAME> --max-days 90 --delete-artifacts true
Run Code Online (Sandbox Code Playgroud)

除了使用 JFrog CLI 删除工件和构建之外,Artifactory Pro 还支持用户插件。您可以编写自己的插件或编辑现有插件以在 Artifactory 中执行许多操作。

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