jfrog-cliartifactory-query-lang

Deleting old artifacts from a list of repositories


I am trying to delete artifacts ( older than 6 months) from a list of repositories in jfrog artifactory. I am creating a spec file like below and using that spec i am deleting using jfrog cli. My query is there any way i can execute the aql in loops instead of manually updating the repo name: foobar

 {
  "files": [
    {
      "aql": {
        "items.find": {
          "repo": "foobar",
          "$or": [
            {
              "$and": [
                {
                  "modified": { "$lt": "2021-06-06T21:26:52.000Z"}
                }
              ]
            }
          ]
        }
      }
    }
  ]
}```
jfrog rt del --spec /tmp/foo.spec --dry-run

I want to run the aql in loops only change will be the repo name . Is there a way to do it ?

Solution

  • Looks we don't have direct way to achieve this, but you can make use of -spec-vars in order to pass dynamic variables through CLI command. I meant to say we can write a script to pass names of selected repositories in a loop and use --spec-vars as below:

    jfrog rt del --spec test.spec --spec-vars "RepoKey=libs-release-local" --dry-run
    

    and spec file will be looks below:

    {
      "files": [
        {
          "aql": {
            "items.find": {
              "repo": "${RepoKey}",
               ...............
            }
          }
        }
      ]
    }
    

    Also, there is a Artifactory Cleanup User Plugin where we can specify required repositories names to cleanup as per your needs, hence, you may refer this too.