2

有没有办法使用 AQL 下载工件?

我有一个查询发送:

curl -u user:pass \
-X POST https://artifactoryURL/artifactory/api/search/aql \
-H 'content-type: text/plain' \
-T query.aql

我的query.aql

items.find(
    {
        "repo":{"$eq":"repo"},
        "$and": [
          {
            "path": { "$match": "path/*"},
            "name": { "$match": "*.rpm"}
          }
        ]
    }
)
.sort({ "$desc": ["modified"] })
.limit(1)

既然我知道它返回了我想要的东西,有没有办法将请求从更改为api/search/aql类似api/download/aql并获取这些项目?

编辑:

我也曾尝试使用jfrog cli执行此操作,但它们在那里并不完全支持 AQL(排序和限制不起作用)。

这是我尝试过的命令:

jfrog rt s --spec=query-aql.json

以及未能对结果进行排序和限制的规范:

{
  "files": [
    {
      "aql": {
        "items.find": {
          "repo": "repo",
          "$and": [
            {
              "path": { "$match": "path/*"},
              "name": { "$match": "*.rpm"}
            }
          ]
        }
      },
      "sort": {
        "$asc": ["modified"]
      },
      "limit": 1
    }
  ]
}

编辑2:

添加了 jfrog-cli-go 问题:https ://github.com/JFrogDev/jfrog-cli-go/issues/56

4

3 回答 3

2

使用 aql 脚本从 artifactory 下载文件的一种简单方法是使用此处提到的 JFrog cli:https ://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory#CLIforJFrogArtifactory-Download ,CopyandMoveCommandsSpecSchema

cli 可以作为 linux、mac 或 windows 的可执行文件下载,应该适合您的需要

使用 curl 命令,您唯一能做的就是解析 aql 查询的结果并对每个文件执行下载请求。

于 2017-05-22T13:27:53.407 回答
2

我只是在寻找一个非常相似的东西——使用下载规范文件从给定的 repo 和路径下载最新的工件。我不在乎是否使用 AQL,我只希望它在download-spec.json文件中。如果您转到上面的链接,请查看示例 5

为您的示例修改:

{
  "files": [
  {
    "pattern": "path/*.rpm",
    "target": "my/download/path/",
    "sortBy": "created",
    "sortOrder": "desc",
    "limit": 1,
  }
  ]
}
于 2018-01-03T00:55:35.317 回答
0

jfrog cli 支持--limit--sort-order--sort-by参数。

以下对我有用:

jfrog rt search --spec=/tmp/jfrogfilespec.json --sort-by created --sort-order=desc --limit 1 

json规范文件的内容是:

{ "files": [ { "aql": { "items.find": { "repo":{"$eq":"my-release-repo"}, "name":{"$match":"my-artifact-prefix*"} } } } ] }

这会生成以下查询(根据调试模式):

items.find( { "repo":{"$eq":"my-release-repo"}, "name":{"$match":"my-artifact-prefix*"} } ).include("name","repo","path","actual_md5","actual_sha1","size","type","created").sort({"$desc":["created"]}).limit(1)

令人沮丧的是,我似乎找不到将“jfrog rt search”与允许我影响搜索的“include”修饰符部分的文件规范一起使用的方法。

于 2018-04-17T16:14:31.457 回答