首页 文章

Artifactory:通过脚本将Ivy Descriptors发布到Repository

提问于
浏览
0

我已经向你解释过,如果你想让Artifactory管理你的存储库(我这样做),如果你不想亲自手工编写你自己的Ivy描述符(我没有),那么你的选择就是之一:

  • 使用Ivy RoundUp,除了工件本身外还包含Ivy描述符;要么

  • 编写脚本为您生成描述符;要么

  • 编写XML转换以在Maven和Ivy描述符模式之间进行转换

在仔细权衡我的选项之后,我决定编写一个Python脚本来生成这些描述符 . 我将我希望部署/安装到我的存储库的所有工件放入 deploy/ 文件夹,脚本将迭代它在此文件夹中找到的任何工件,查询用户以获取有关它的信息,然后 perform the deployment for me ,就在那里脚本 .

虽然最后一个要求不是强制性的,但让脚本点击Artifactory的RESTful API并在适当的位置为我部署描述符和工件会很不错 .

This page解释了API,并且是我的问题的主题 .

API公开的唯一基于 PUT 的操作是:

PUT http://localhost:8080/artifactory/<repo>/<organization>/<module>/<version>/<artifact>:sample-metadata

<xml-metadata-content/>

此操作的描述是:

将XML元数据附加到项目(文件或文件夹) .

Is this what I'm looking for? 例如,如果我有一个名为 my-utils-2.3.jar 的jar,那么我希望能够将它放在 deploy/ 目录中,让我的脚本不仅生成 my-utils-2.3-ivy.xml ,而且还要将这两个项目部署到我位于正确位置的存储库(在这个例子中,它将是 http://localhost:8080/artifactory/my-repo/my/utils/2.3/ ) .

如果这不是我想要的,那么Artifactory的API甚至可以支持我想要的东西(这里的文档在哪里!)?

并且,如果它是我正在寻找的,那么我有第二个与安全相关的问题 . 我想保证我的所有存储库都是安全的 . 理想情况下,执行此Python脚本的用户必须提供Artifactory admin 用户名和密码才能使部署成功执行 .

但是在这个操作的定义中我没有看到任何对身份验证的支持!!我是否认为Artifactory不会对REST调用进行身份验证?!?

提前致谢!

Edit:
我在Artifactory / Users old nabble论坛上找到了以下示例:

curl -X PUT -u user:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/"

Would this be what I'm looking for? 这样,我可以将PyCurl用于curl / libcurl接口,并且仍然可以实现安全性 . 如果是的话,那么 why am I being asked for authentication by curl, as opposed to Artifactory?

2 回答

  • 1

    尽管Artifactory足够灵活以支持常 Spring 藤存储库,但我建议将其作为Maven存储库运行 .

    为什么?

    • Maven已将自己确立为事实上的Java存储库标准 .

    • 其他构建工具,Ivy,Gradle,sbt等都了解Maven存储库 .

    以下答案描述了ivy如何部署到Maven存储库:

    Convert ivy.xml to pom.xml

  • 0

    Artifactory对所有REST调用使用HTTP BASIC身份验证 . 您提到的curl示例将不起作用,因为您需要指定文件的完整目标路径(当前命令将只在(重新)创建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"
    

    但是,您可以使用常 Spring 藤通过IBiblio resolver(请参阅"usepoms")直接从第三方Maven回购中解析,或使用convertpom任务自动将poms转换为常 Spring 藤描述符 .

    Artifactory还允许您在内部应用此类型的pom-> ivy转换,并通过基于groovy的user plugin将ivy文件存储到其缓存中,该user plugin拦截'afterRemoteDownload'事件 .

相关问题