Артефабрика:Публикация дескрипторов Ivy в репозиторий с помощью скрипта

StackOverflow https://stackoverflow.com/questions/9434188

Вопрос

Мне объяснили, что если вы хотите, чтобы 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?!?

Заранее спасибо!

Редактировать:
Я нашел следующий пример на старом форуме 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?

Это было полезно?

Решение

Artifactory использует аутентификацию HTTP BASIC для всех вызовов REST.Упомянутый вами пример с завитком не будет работать, поскольку вам необходимо указать полный целевой путь для файл (текущая команда просто (пере) создаст каталог в Artifactory и проигнорирует файловый поток).Вам следует использовать:

curl -XPUT -f -uadmin:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/my-utils-2.3.jar"

Однако вы можете использовать Ivy для разрешения напрямую из сторонних репозиториев Maven через Резолвер ILiblio (см. «usepoms») или автоматически конвертировать poms в дескрипторы плюща, используя команду Конвертпом задача.

Artifactory также позволяет вам применять этот тип преобразования pom->ivy внутри компании и сохранять файл ivy в его кэше с помощью groovy-интерфейса. пользовательский плагин который перехватывает событие afterRemoteDownload.

Другие советы

Хотя Artifactory достаточно гибок для поддержки репозиториев Ivy, я бы рекомендовал запускать его как репозиторий Maven.

Почему?

  1. Maven зарекомендовал себя как де-факто Java. репозиторий стандарт.
  2. Другие инструменты сборки, Ivy, Gradle, sbt и т. д., понимают репозитории Maven.

В следующем ответе описывается, как ivy можно развернуть в репозитории Maven:

Преобразование ivy.xml в pom.xml

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top