загрузка записи архива артефакта: 404 для tgz с начальной точкой в пути к заархивированному ресурсу
Архив Artifactory запись загрузки API систематически не для архива tar.gz
Весь архив можно скачать https://jcr.mydomain/artifactory/osb-cmdb-builds/manual_report.tgz, но отдельные файлы по адресу https://jcr.mydomain/artifactory/osb-cmdb-builds/manual_report.tgz!/osb-cmdb/build/reports/tests/test/index.html сбой с сообщениемUnable to find zip resource: 'osb-cmdb/build/reports/tests/test/index.html' using full URI '/artifactory/osb-cmdb-builds/manual_report.tgz!/osb-cmdb/build/reports/tests/test/index.html'
Однако обозреватель репозитория артефактов правильно отображает содержимое архива.
Это было воспроизведено с использованием образа докера jfrog/artifactory-jcr
версия:7.3.2 и tar
$ tar --version
tar (GNU tar) 1.29
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
Я что-то пропустил? Исправлена ли эта искусственная ошибка в более позднем выпуске?
Вот шаги, чтобы воспроизвести проблему:
$ tar cvfz manual_report2.tgz ./osb-cmdb/build/reports/tests/test/index.html
$ tar tvfz manual_report2.tgz
-rw-r--r-- guillaume/guillaume 4193 2020-04-01 22:25 ./osb-cmdb/build/reports/tests/test/index.html
Посмотреть скриншоты просмотр скриншота запись скачать снимок экрана
А также образец tgz на Google Диске, как предлагается в https://meta.stackexchange.com/questions/47689/how-can-i-attach-a-file-to-a-post
Временное решение: используйте формат zip или tar вместо формата tar.gz.
2 ответа
Проблема связана с "." у вас есть путь к файлу. Вы можете увидеть точку как часть пути на скриншоте браузера дерева. Причина, по которой Artifactory не находит файл при попытке загрузки, заключается в том, что в пути отсутствует точка.
Сложность точки заключается в том, что она считается специальным символом, который переводится в текущий каталог. Если вы попытаетесь включить его в URL-адрес, который вы используете для загрузки файла, браузер удалит его.
Однако, используя кодировку URL, я смог загрузить файл с помощью cURL:
curl -vv "http://localhost:8081/artifactory/generic-local/manual_report2.tgz%21/%2E/osb-cmdb/build/reports/tests/test/index.html"
Следующее использование кодировки URL работает с Firefox:
http://localhost:8081/artifactory/generic-local/manual_report2.tgz!%2F./osb-cmdb/build/reports/tests/test/index.html
(Уточнение ответа @dror-bereznitsky)
Избегайте ведущих ./
в архиве tar.gz.
Если пути к архивам вычисляются динамически (например, результат find . -name "pattern"
) затем вызовите команду tar с помощью --transform='s|^\./||S'
аргумент, предложенный в /questions/24340167/sobstvennyie-kollektsii-vse-esche-stoit-dopolnitelnoj-rabotyi/24340187#24340187
$ find . -name "index.html"
./osb-cmdb/build/reports/tests/test/index.html
$ tar cvfz manual_report2.tgz --transform='s|^\./||S' `find . -name "index.html"`
$ tar tvfz manual_report2.tgz
-rw-r--r-- guillaume/guillaume 4193 2020-04-01 22:25 osb-cmdb/build/reports/tests/test/index.html