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

时间:2016-10-18 21:39:19

标签: artifactory

如何从神器中删除与模式匹配的所有工件(例如,超过6个月)?

使用curl或go库

2 个答案:

答案 0 :(得分:5)

jfrog cli采用'spec file'来搜索工件。请参阅此处查看information on jfrog spec files

jfrog cli documentation is available here

创建一个aql搜索查询以查找所需的工件:

如果您的aql搜索语法如下:

/tmp/foo.query

items.find(
  {
    "repo":"foobar",
    "modified" : { "$lt" : "2016-10-18T21:26:52.000Z" }
  }
)

你可以找到这样的工件:

curl -X POST -u admin:<api_key> https://artifactory.example.com/artifactory/api/search/aql -T foo.query

那么spec文件将是

/tmp/foo.spec

{
  "files": [
    {
      "aql": {
        "items.find": {
          "repo": "foobar",
          "$or": [
            {
              "$and": [
                {
                  "modified": { "$lt": "2016-10-18T21:26:52.000Z"}
                }
              ]
            }
          ]
        }
      }
    }
  ]
}

你会像这样使用golang库:

jfrog rt del --spec /tmp/foo.spec --dry-run

您也可以执行相对日期

,而不是修改
"modified": { "$before":"6mo" }

如果您收到错误405方法不允许,请验证您的api或密码是否正确,并尝试使用PUT而不是POST

答案 1 :(得分:2)

安装jforg cli

配置jfrog cli进行API调用

jfrog rt c Artifactory --url=https://<>url/artifactory --apikey=<add api key> #can generate api key from user profile

创建一个称为artifactory.spec的规范文件。您可以根据需要更改查找查询。下面的查询将

显示以下物品:

  • 注册表-docker-staging

  • 路径-*

  • 下载状态= null#未下载

  • 在6个月前创建

    {
    "files": [
      {
        "aql": {
          "items.find": {
            "repo": {"$eq":"docker-staging"},
            "path": {"$match":"*"},
            "name": {"$match":"*"},
            "stat.downloads":{"$eq":null},
            "$or": [
              {
                "$and": [
                  {
                    "created": { "$before":"6mo" }
                  }
                ]
              }
            ]
          }
        }
      }
    ]
    

您可以搜索要删除的软件包

jfrog rt s --spec artifactory.spec

运行删除命令

jfrog rt del --spec artifactory.spec