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 требуется пользователь с правами администратора. Чтобы гарантировать, что непривилегированные пользователи не получат доступ к информации без необходимых разрешений, пользователи без прав администратора имеют следующие ограничения:
- Основным доменом в запросе может быть только элемент.
- Следующие три поля должны быть включены в директиву include: имя, репо и путь.
В вашем случае вы используете домен сборки в запросе, который требует прав администратора