有人向我解释过,如果你想让Artifactory管理你的存储库(我这样做),如果你不想自己手工编写自己的Ivy描述符(我没有),那么你的选项是:
在仔细权衡我的选项后,我决定编写一个Python脚本来生成这些描述符。我将我希望部署/安装的所有工件放到我的存储库中的deploy/
文件夹中,脚本将迭代它在此文件夹中找到的任何工件,查询用户以获取有关它的信息,然后为我执行部署,就在脚本内部。
虽然最后一个要求不是强制性的,但只需让脚本命中Artifactory的RESTful API并在适当的位置为我部署描述符和工件就 nice 。
This page解释了API,并且是我的问题的主题。
API公开的唯一基于PUT
的操作是:
PUT http://localhost:8080/artifactory/<repo>/<organization>/<module>/<version>/<artifact>:sample-metadata
<xml-metadata-content/>
此操作的描述为:
将XML元数据附加到项目(文件或文件夹)。
这是我正在寻找的吗?例如,如果我有一个名为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
用户名&amp;密码,以便部署成功执行。
但是在这个操作的定义中我没有看到任何对身份验证的支持!!我是否假设Artifactory不验证REST调用?!?
提前致谢!
修改
我在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/"
这是我正在寻找的吗?这样,我可以将PyCurl用于curl / libcurl接口,并且仍然可以实现安全性。如果是这样,那么为什么我要求curl进行身份验证,而不是Artifactory?
答案 0 :(得分:1)
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"
但是,您可以使用常春藤通过IBiblio resolver直接从第三方Maven回购中解析(请参阅“usepoms”),或使用convertpom任务自动将poms转换为常春藤描述符。
Artifactory还允许您在内部应用此类型的pom-&gt; ivy转换,并通过基于groovy的user plugin将常春藤文件存储到其缓存中,该{_ 3}拦截'afterRemoteDownload'事件。
答案 1 :(得分:0)
虽然Artifactory足够灵活以支持常春藤存储库,但我建议将其作为Maven存储库运行。
为什么呢?
以下答案描述了ivy如何部署到Maven存储库: