AQL 构建域对象不返回结果

bob*_*ink 5 artifactory artifactory-query-lang

我遇到了一个问题,即在使用 AQL 时,我无法获得我在构建域对象上进行的任何查询以返回

当我做以下卷曲时:

curl -X GET -H "X-JFrog-Art-Api: myArtifactroyKey" -H "Cache-Control: no-cache" "https://MyArtifactoryServer/artifactory/api/build/"
Run Code Online (Sandbox Code Playgroud)

我得到一组结果:

{
  "builds": [
    {
      "uri": "/someBuild",
      "lastStarted": "2017-02-15T22:02:49.066+0000"
    },
    {
      "uri": "/someOtherBuild",
      "lastStarted": "2017-02-15T21:45:09.590+0000"
    }, 
      "uri": "/someThirdBuild",
      "lastStarted": "2017-02-15T21:17:38.794+0000"
    }
],
  "uri": "https://myArtifactoryServer/artifactory/api/build"
}
Run Code Online (Sandbox Code Playgroud)

所以我知道我的 Artifactory 中有构建

但是,当我进行以下 curl 时,我相信这是请求任何名称的所有构建,我没有得到任何结果

curl -X POST -H "X-JFrog-Art-Api: myArtifactroyKey" -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -d 'builds.find({"name": {"$match":"*"}})' "https://MyArtifactoryServer/artifactory/api/search/aql"
Run Code Online (Sandbox Code Playgroud)

返回:

{
  "results": [],
  "range": {
    "start_pos": 0,
    "end_pos": 0,
    "total": 0
  }
}
Run Code Online (Sandbox Code Playgroud)

我在使用时已经能够得到结果,items.find()但没有任何运气builds.find() 有什么我遗漏的吗?

我的总体意图是让 Query 返回基于名称的特定构建的最新构建信息,但我什至无法获得针对构建域对象的最简单的 Query 工作。

在此先感谢您的帮助。

Dro*_*sky 5

答案可能与权限有关。如果您使用的 API 密钥属于非管理员用户,那么它可以解释这种情况。
使用 AQL 查询构建域需要管理员权限,而“所有构建”API 仅需要特权用户。

  • 缺陷在于,当用户没有足够的权限时,“/api/search/aql” API 没有通过返回适当的 HTTP 错误状态来明确这一点(403 Forbidden 在这里是合适的);奇怪的是,允许(可能更重)获取所有“/api/build”,而不允许更窄的 AQL 查询;令人沮丧的是“/api/build”本身不支持任何过滤。 (3认同)