При загрузке артефакта cURL возвращается ошибка 404 Файл не найден, если в хранилище существует файл артефакта - PullRequest
0 голосов
/ 18 февраля 2020

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

Я написал сценарий для артефакта pu sh в хранилище с помощью вызова API cURL в сценарии PowerSHell:

curl.exe -H "X-JFrog-Art-Api: $apiKey" -X PUT $repoUrl -T $artifactFilePath

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

Позже я попытался загрузить тот же файл артефакта, используя следующий вызов API cURL:

curl.exe -H "X-JFrog-Art-Api: $apiKey" -X GET $artifactUrl

Несмотря на то, что я могу просматривать Артефакт GUI и ясно видеть файл артефакта в под-репозитории, выполнение запроса GET возвращает:

{
  "errors" : [ {
    "status" : 404,
    "message" : "File not found."
  } ]
}

Я проверил и дважды проверил, что он правильный путь к хранилищу (он соответствует пути в начальном запросе на загрузку). Я использовал один и тот же ключ API для каждого запроса и подтвердил, что соответствующий функциональный идентификатор имеет права на чтение, запись, аннотацию и удаление в хранилище.

Я работаю с этим уже несколько часов и до сих пор не смогли определить или решить проблему. Инсайты или советы по этому вопросу были бы весьма желательны.

ОБНОВЛЕНИЕ:

Выполнение запроса cURL с ключом -v- для подробных выходных данных:

  • Подключено к www. [Artifactory URL]. net (169.177.244.86) порт 443 (# 0)
  • schannel: соединение SSL / TLS с www. [Artifactory URL]. net порт 443 (шаг 1/3)
  • schannel: проверка отзыва сертификата сервера
  • schannel: отправка начальных данных квитирования: отправка 201 байтов ...
  • schannel: отправка начальных данных квитирования: отправлено 201 байт
  • schannel: соединение SSL / TLS с www. [Artifactory URL]. net порт 443 (шаг 2/3)
  • schannel: не удалось получить рукопожатие, нужно больше данных
  • schannel: соединение SSL / TLS с www. [Artifactory URL]. net порт 443 (шаг 2/3)
  • schannel: зашифрованные данные получены 2415
  • schannel : буфер зашифрованных данных: смещение 2415, длина 4096
  • schannel: отправка данных следующего квитирования: отправка 126 байтов ... * 10 44 *
  • schannel: соединение SSL / TLS с www. [Artifactory URL]. net порт 443 (шаг 2/3)
  • schannel: зашифрованные данные получены 290
  • schannel: буфер зашифрованных данных: смещение 290, длина 4096
  • канал: SSL / TLS квитирование завершено
  • канал: соединение SSL / TLS с www. [Artifactory URL]. net порт 443 (шаг 3 / 3)
  • schannel: сохраненный дескриптор учетных данных в кэше сеанса

    GET / [Artifactory репо] / [путь репозитория Artifactory] / [имя файла артефакта] .txt HTTP / 1.1 Хост: www. [ Artifactory URL] .net User-Agent: curl / 7.55.1 Принимать: / X-JFrog-Art-Api: [API key] 0 0 0 0 0 0 0 0 -: -: - - 0:00:01 -: -: - 0 0 0 0 0 0 0 0 0 -: -: - 0:00:02 -: -: - 0 0 0 0 0 0 0 0 0 -: -: - 0:00:03 -: -: - 0 0 0 0 0 0 0 0 0 -: -: - 0:00:04 -: - -: - 0 0 0 0 0 0 0 0 0 -: -: - 0:00:05 -: -: - 0 0 0 0 0 0 0 0 0 -: -: - - 0:00:06 -: -: - 0 0 0 0 0 0 0 0 0 -: -: - 0:00:07 -: -: - 0

  • dud
  • schannel: клиент хочет т o читать 102400 байт
  • канал: изменен размер encdata_buffer 103424
  • канал: зашифрованный буфер данных: смещение 0 длина 103424
  • канал: зашифрованные данные получены 1144
  • канал : буфер зашифрованных данных: смещение 1144 длины 103424
  • schannel: длина дешифрованных данных: 1115
  • schannel: добавлены расшифрованные данные: 1115
  • schannel: зашифрованные кэшированные данные: смещение 1115 длины 102400
  • schannel: буфер зашифрованных данных: длина смещения 0 103424
  • schannel: буфер дешифрованных данных: смещение 1115 длина 102400
  • schannel: очистка schannel_recv
  • schannel: возвращены расшифрованные данные 1115
  • schannel: буфер расшифрованных данных: смещение 0 длина 102400 https://themes.googleusercontent.com; object-sr c 'none' <{[3 байта данных] 100 3 0 3 0 0 0 0 -: -: - 0:00:08 -: -: - 0100 3 0 3 0 0 0 0 -: -: - 0:00:08 -: -: - 0 </li>
  • Соединение № 0 с хостом www. [Artifactory URL]. net оставлено без изменений. 1097 *

1 Ответ

0 голосов
/ 20 февраля 2020

Первоначальная проблема 404, по-видимому, была вызвана ошибкой в ​​моем URL-адресе артефакта в исходном вызове API cURL.

В журналах выше показан возврат вызова после исправления URL-адреса. Даже при правильном пути артефакта файл не загружался должным образом. Обратите внимание, что 'dud' в вышеприведенном подробном журнале вызовов является содержимым текстового файла, подразумевая, что файл найден и успешно прочитан.

В конце добавление Переключатель --output с указанным именем файла привел к успешной загрузке файла артефакта.

...