У меня проблема с рекурсивным извлечением папки из Artifactory с помощью JFrog CLI - PullRequest
0 голосов
/ 02 марта 2020

Я использую сервер Artifactory. Я пытаюсь сохранить папку сторонних файлов в моем репо.

Я смог загрузить zip-файл и взорвать его, чтобы мои файлы были в MY_REPO / MY_FOLDER /

Я пытаюсь рекурсивно загрузить содержимое папки, используя:

jfrog rt dl --recursive MY_REPO/MY_FOLDER

Я включил отладку и получаю:

    [Info] Searching items to download...
    [Debug] Searching Artifactory using AQL query:
     items.find({"repo": "MY_REPO","path": {"$ne": "."},"$or": [{"$and":[{"path": {"$match": "MY_FOLDER"},"name": {"$match": "*"}}]},{"$and":[{"path": {"$match": "MY_FOLDER/*"},"name": {"$match": "*"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","property")
    [Error] Artifactory response: 405 Method Not Allowed

    {
      "status": "failure",
      "totals": {
        "success": 0,
        "failure": 0
      }
    }
    [Error] Download finished with errors. Please review the logs

У меня есть пробные варианты MY_FOLDER , MY_FOLDER / , MY_FOLDER / . и с / без рекурсии. Я получаю ту же ошибку.

Я знаю, что у меня есть разрешения, потому что я могу загрузить файл:

jfrog rt u TEST_FILE MY_FOLDER

просто отлично. Но я не могу повернуться и потянуть вниз:

jfrog rt dl MY_FOLDER/TEST_FILE

приводит к:

    [Info] Searching items to download...
    [Debug] Searching Artifactory using AQL query:
     items.find({"repo": "MY_REPO","$or": [{"$and":[{"path": {"$match": "."},"name": {"$match": "MY_FILE"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","property")
    [Error] Artifactory response: 405 Method Not Allowed

    {
      "status": "failure",
      "totals": {
        "success": 0,
        "failure": 0
      }
    }
    [Error] Download finished with errors. Please review the logs

Я не уверен, что не работает, нет ничего в StackOverflow, JFrog Dox или где-либо еще с проблемами, связанными с использованием jfrog cli. : (*

Мой jfrog-cli.conf выглядит так:

        {
          "artifactory": [
            {
              "url": "https://SITE_NAME:PORT_NUM/artifactory/list/MY_REPO/",
              "user": "USERNAME",
              "serverId": "MY_REPO",
              "isDefault": true,
              "apiKey": "API_KEY_FROM_ARTIFACTORY"
            }
          ],
          "Version": "1"
        }

ОБНОВЛЕНО Я работал под управлением версии 1.22.1 для Windows 64-бит. Я сейчас использую jfrog cli версии 1.34.1 для Windows 64-бит. В первом комментарии я обновился до последнего бинарного файла и попытался запустить поиск, как с MY_FOLDER, так и без него:

jfrog rt s TEST_FILE и jfrog rt s MY_FOLDER/TEST_FILE

Оба возвращают одинаковые результаты. Я включил DEBUG, и с более новым двоичным файлом я действительно получаю две ошибки. Более старый двоичный файл только что сообщил об ошибке 405. Более новый сообщает 404 (не найдено), а затем сообщает об ошибке как метод 405. Не разрешено.

[Debug] Sending usage info...
[Info] Searching artifacts...
[Debug] Searching Artifactory using AQL query:
 items.find({"$or":[{"$and":[{"repo":"TEST_FILE","path":{"$match":"*"},"name":{"$match":"*"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","modified","created","property")
[Debug] Sending HTTP POST request to: https://SITE_NAME:8443/artifactory/list/MY_REPO/api/search/aql
[Debug] Sending HTTP GET request to: https://SITE_NAME:8443/artifactory/list/MY_REPO/api/system/version
[Debug] Artifactory response: 404 Not Found
{
  "errors": [
    {
      "status": 404,
      "message": "File not found."
    }
  ]
}
[Error] Artifactory response: 405 Method Not Allowed

Это все еще странно, потому что я ищу файл, который я только что загрузил. Я даже удалил загруженный файл и повторно загруженный, чтобы проверить, что более новый клиент все еще может загружать файлы. Я пробовал поиск по шаблону, чтобы найти все файлы, но он возвратил ту же ошибку.

Я также вижу файл, где он должен быть используя веб-интерфейс Artifactory, и загрузите файл и удали его. Итак, Артефактори знает, что он там, и у меня есть к нему доступ. : - /

1 Ответ

0 голосов
/ 04 марта 2020

URL в вашей конфигурации должен содержать только базовый URL Artifactory, то есть: "SITE_NAME:PORT_NUM/artifactory".

Вы должны указать путь к каталогу в командах загрузки и выгрузки.

Используйте команду ping для проверки работоспособности установки, а затем перейдите оттуда.

Кстати: причина, по которой загрузка работает, но загрузка не удалась, по стечению обстоятельств. Команда upload просто использует API REST upload, который ожидает путь (который вы указали в вашей конфигурации), но команда download сначала отправляет запрос поиска, который не ожидает путь, поэтому он завершается неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...