Artifactory aql: найти сборки работы с данным свойством

Я пытаюсь запросить, какие номера сборки произвели артефакты из сборки foo с артефактом vcs.Revision=aabbccddee123456,

В артефакте 5.1.3.

Я пытался так до сих пор:

curl -u user:apikey -i -X POST https://artifactory.foobar.com/artifactory/api/search/aql -H "content-type:text/plain" -T query.json

query.json:

builds.find(
{
  "module.artifact.item.repo":"snapshot-local",
  "name":"foo",
  "module.artifact.item.@vcs.Revision":"aabbccddee123456"
}
)

Тем не менее, ни одна из этих 3-х строк не кажется правильной

  • builds.find({"module.artifact.item.repo":"snapshot-local"})ничего не возвращает,

  • builds.find({"name":"foo"})возвращает тот же пустой ответ,

  • builds.find({"module.artifact.item.@vcs.Revision":"aabbccddee123456"}) также возвращает это:

{ "results" : [ ], "range" : { "start_pos" : 0, "end_pos" : 0, "total" : 0 } }

Что я здесь не так делаю? Я вижу в веб-приложении сборки, которые я опубликовал с этим именем и с правильными свойствами артефакта.

2 ответа

Решение

Вот рабочее решение, которое даст номера сборок (так как предоставление прав администратора для сборок запросов не является решением для нас):

query.json:

items.find(
{
  "repo":"snapshot-local",
  "artifact.module.build.name":"foo",
  "artifact.item.@vcs.Revision":"aabbccddee123456"
}
).include("artifact.module.build.number")

Это возвращает список всех артефактов, которые были построены с соответствующими свойствами, с прикрепленным номером сборки, например:

{
"results" : [ {
  "repo" : "snapshot-local",
  "path" : "foo/42",
  "name" : "a.out",
  "type" : "file",
  "size" : 123456789,
  "created" : "2018-07-05T12:34:56.789+09:00",
  "created_by" : "jenkins",
  "modified" : "2018-07-05T12:34:56.789+09:00",
  "modified_by" : "jenkins",
  "updated" : "2018-07-05T12:34:56.789+09:00",
  "artifacts" : [ {
    "modules" : [ {
      "builds" : [ {
        "build.number" : "42"
      } ]
    } ]
  } ]
},
[SNIP]
}
 ],
"range" : {
  "start_pos" : 0,
  "end_pos" : 30,
  "total" : 30
}
}

Я могу затем разобрать это, чтобы извлечь build.number,

Для некоторых запросов AQL требуется пользователь с правами администратора. Чтобы гарантировать, что непривилегированные пользователи не получат доступ к информации без необходимых разрешений, пользователи без прав администратора имеют следующие ограничения:

  1. Основным доменом в запросе может быть только элемент.
  2. Следующие три поля должны быть включены в директиву include: имя, репо и путь.

В вашем случае вы используете домен сборки в запросе, который требует прав администратора

Другие вопросы по тегам