Артефакт: публикация дескрипторов плюща в репозитории через скрипт - PullRequest
0 голосов
/ 24 февраля 2012

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

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

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 сторонних производителей через IBiblio resolver (см. «Usepoms») или автоматически конвертировать poms в ivyдескрипторы, использующие задачу convertpom .

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

0 голосов
/ 25 февраля 2012

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

Почему?

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

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

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

...