Мне объяснили, что если вы хотите, чтобы Artifactory управлял вашим хранилищем (что я делаю), и если вы не хотите сами писать собственные дескрипторы Ivy (чего я не делаю), то вашВозможны следующие варианты:
- Использовать Ivy RoundUp, который содержит дескрипторы Ivy в дополнение к самим артефактам;или
- Напишите скрипт для генерации дескрипторов для вас;или
- Написать преобразование XML для преобразования между схемами дескрипторов Maven и Ivy
После тщательного взвешивания своих вариантов я решил написать скрипт Python для генерации этих дескрипторов.Я помещу все артефакты, которые я хочу развернуть / установить в свой репозиторий, в папку deploy/
, и сценарий будет перебирать любые артефакты, найденные в этой папке, запрашивать информацию о нем у пользователя, а затем выполнитьразвертывание для меня , прямо там, внутри скрипта.
Хотя это последнее требование не является обязательным, было бы неплохо , чтобы скрипт просто нажал RESTful API Artifactory и развернулдескриптор и артефакт для меня, в нужном месте.
Эта страница объясняет API и является темой моего вопроса.
Только на основе PUT
Операция, которую предоставляет API, такова:
PUT http://localhost:8080/artifactory/<repo>/<organization>/<module>/<version>/<artifact>:sample-metadata
<xml-metadata-content/>
Описание этой операции:
Присоединение метаданных XML к элементу (файлу или папке).
Это то, что я ищу? Например, если у меня есть банка с именем my-utils-2.3.jar
, то я хочу иметь возможность поместить ее в каталог deploy/
и иметьмой скрипт не только генерирует my-utils-2.3-ivy.xml
, но для развертывания обоих этих элементов в моем хранилище в нужном месте (которое в этом примере будет http://localhost:8080/artifactory/my-repo/my/utils/2.3/
).
Если это не то, что я ищу, тогдаAPI Artifactory даже поддерживает то, что я хочу (и где документация по этому вопросу!)?
И, если это то, что я ищу, у меня есть второй вопрос, связанный с безопасностью.Я хотел бы сохранить все свои хранилища в безопасности.В идеале, пользователь, выполняющий этот скрипт Python, должен предоставить Artifactory admin
имя пользователя и пароль для успешного выполнения развертывания.
Но нигде в определении этой операции я не вижу никакой поддержки аутентификации!!Должен ли я считать, что Artifactory не аутентифицирует вызовы REST?!?
Заранее спасибо!
Редактировать: На старом форуме nabble Artifactory / Users я нашел следующий пример:
curl -X PUT -u user:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/"
Это то, что я ищу? Таким образом, я мог бы использовать PyCurl для curl /Интерфейс libcurl, и все же достичь безопасности.Если так, то почему меня запрашивают аутентификацию с помощью curl, а не Artifactory?