user17058837
user17058837

Reputation:

How to get a list of subfolders and files in jfrog Artifactory

I am looking to fetch the subfolders and files inside jfrog artifactory repo and for that I am running the below script which I am running in Groovy

def test = sh(script: "curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d 'items.find({\"type\" : \"file\",\"\$or\":[{\"repo\" : {\"\$match\" : \"war*\"}, \"repo\" : {\"\$match\" : \"web*\"} }]}).include(\"name\",\"repo\",\"path\",\"size\").sort({\"\$desc\": [\"size\"]}).limit(10)'", returnStdout: true).trim()
echo "The list is ${test}"

But its not returning any value. Any solution would be helpful. Thanks

Upvotes: 2

Views: 12165

Answers (3)

Jack T
Jack T

Reputation: 51

I am guessing you are in escape special character hell. Put your query in a *.aql file and then point to it. See below.

// Create the aql file and write the query to it

writeFile file: 'sizeQuery.aql', text: 'items.find({"type":"file"}).sort({"$desc":["size"]}).limit(10)'

// Pass the aql file to your curl command

sh 'curl -u uname:password -H "Content-Type: text/plain" -X POST -d @sizeQuery.aql "https://artifactory.xxxx.com/artifactory/api/search/aql"'

Upvotes: 0

yong
yong

Reputation: 13722

You can use api/storage get the children of a artifact path.

For example, your Artifactory has repository: maven-prerelease-local for maven, you can open https://artifactory.xxxx.com/maven-prerelease-local in browser, it will list file and folders under it.

By adding api/storage in URL, it will return a JSON response.

def test = sh(script: """
  curl -u uname:password -X GET -k \
  "https://artifactory.xxxx.com/api/storage/maven-prerelease-local/com/xxx/xxx/"
""", returnStdout: true).trim()

echo "The list is ${test}"

Upvotes: 5

Yuvarajan
Yuvarajan

Reputation: 470

To get detailed information about the existing subfolders under a specific directory/repository, you can use the following format of execution.

$ jfrog rt search --spec=test.aql
[Info] Searching artifacts...
[Info] Found 1 artifact.
[
  {
    "path": "delta-generic-local/alpha/beta",
    "type": "folder",
    "created": "2022-08-04T13:53:36.173Z",
    "modified": "2022-08-04T13:53:36.173Z"
  }
]

& the spec file includes the following content.

$ cat test.aql
    {
      "files":
        [
          {
            "aql":
              {
                "items.find" :
                   {
                     "type":"folder",
                     "repo":{"$eq":"delta-generic-local"},
                     "path":{"$eq":"alpha"}
                   }
              }
          }
        ]
    }

Upvotes: 0

Related Questions