Артефакт AQL скачать артефакт

Есть ли способ загрузить артефакт с помощью 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

3 ответа

Простой способ использовать ваш aql-скрипт для загрузки файлов из артефакта - использовать JFrog cli, как указано здесь: https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory

Cli может быть загружен как исполняемый файл для Linux, Mac или Windows и должен соответствовать вашим потребностям

С помощью команды curl единственное, что вы можете сделать, - это затем проанализировать результат из вашего aql-запроса и выполнить запрос на загрузку для каждого файла.

Я просто искал очень похожую вещь - используйте файл спецификации загрузки, чтобы загрузить последний артефакт из заданного репо и пути. Мне все равно, если я использую AQL или нет, я просто хочу это в download-spec.json файл. Если вы перейдете по ссылке выше, посмотрите на Пример 5.

Модифицировано для вашего примера:

{
  "files": [
  {
    "pattern": "path/*.rpm",
    "target": "my/download/path/",
    "sortBy": "created",
    "sortOrder": "desc",
    "limit": 1,
  }
  ]
}

jfrog cli поддерживает аргументы --limit, --sort-order и --sort-by.

Следующие работы для меня:

/ ctcmn / cmn-tools / artifactory / jfrog rt search --spec = / tmp / jfrogfilespec.json --сортировать по созданному --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" со спецификацией файла, которая позволяет мне влиять на модификатор "include" поиска.

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