根据它们的年龄删除指定路径下的 artifactory 中的 artifact

Ash*_*ley 1 artifactory artifactory-query-lang

我需要为我在 artifactory 中的一个仓库中删除超过特定天数的工件版本。我的意思是,假设我的人工 url 存储库是:-

https://artifactory.mycompany.com/artifactory/myrepo/
Run Code Online (Sandbox Code Playgroud)

在该存储库下,几乎没有名称模式为 abc-*-xyz 的文件夹,这意味着这些文件夹的完全限定路径为:-

https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz
https://artifactory.mycompany.com/artifactory/myrepo/abc-3-xyz
Run Code Online (Sandbox Code Playgroud)

现在在这些文件夹中的每一个下都存储了我只想删除的实际版本化工件文件夹,这意味着整个版本文件夹例如两个网址的:-

https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz/ver_11
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz/ver_12
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz/ver_3
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz/ver_5
Run Code Online (Sandbox Code Playgroud)
因此,如果这些文件夹 ver_* 超过 30 天,我想将它们删除。只有这些 ver_* 文件夹不是 abc-*-xyz 等

我可以看到下面的 stackoverflow 问题,并且能够使其适用于该用例,但无法为我的用例构建 AQL,因此我可以拥有相应的规范文件,该文件可用于删除我在此处需要的内容。

Artifactory 删除所有超过 6 个月的工件

任何帮助我构建 AQL 文件,然后是可以调用以进行实际删除的规范文件的任何帮助,将一如既往地受到高度赞赏。

Eya*_*she 5

以下文件规范符合您的要求:

{
  "files": [
    {
      "aql": {
        "items.find": {
          "repo": "myrepo",
          "path": {"$match":"abc-*-xyz"},
          "name": {"$match":"ver_*"},
          "type": "folder",
          "$or": [
            {
              "$and": [
                {
                  "created": { "$before":"7d" }
                }
              ]
            }
          ]
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

上面的文件规范找到所有符合以下条件的文件夹:

  1. 它们位于 my-repo 存储库下。
  2. 它们位于名称与 abc-*-xyz 匹配的文件夹中,位于存储库的根目录。
  3. 他们的名字匹配ver_*
  4. 它们是在 7 天前创建的。

要删除此文件规范找到的所有文件夹,请执行以下操作。

  1. 创建文件规范并根据需要命名。在此示例中,我们将其称为delete-folders-spec
  2. 在终端中,运行以下 JFrog CLI 命令,同时在与delete-folders-spec相同的目录中

jfrog rt del --spec 删除文件夹规范