Deployment 无法部署文件';。md5';。要在上设置校验和的目标文件';t存在人工制品-JFrog

Deployment 无法部署文件';。md5';。要在上设置校验和的目标文件';t存在人工制品-JFrog,deployment,jar,md5,checksum,artifactory,Deployment,Jar,Md5,Checksum,Artifactory,我正在尝试为我们的一个JAR将md5文件部署到JFrog artifactory。该文件的扩展名为md5。文件名具有jar的名称,因此,如果jar被称为file1.jar,那么它的md5将是file1.md5。我们的人工制品版本是3.0。我们知道Artifactory有它的md5校验和,它是在jar移交给Artifactory时创建的。我们提供的md5是在创建jar时创建的,因此我们认为它很有价值 但是,当我们尝试使用来自Bambol的Artifactory Gradle插件或直接手动将文件上载

我正在尝试为我们的一个JAR将md5文件部署到JFrog artifactory。该文件的扩展名为md5。文件名具有jar的名称,因此,如果jar被称为file1.jar,那么它的md5将是file1.md5。我们的人工制品版本是3.0。我们知道Artifactory有它的md5校验和,它是在jar移交给Artifactory时创建的。我们提供的md5是在创建jar时创建的,因此我们认为它很有价值

但是,当我们尝试使用来自Bambol的Artifactory Gradle插件或直接手动将文件上载到Artifactory时,我们会得到错误:

无法部署文件“filename.md5”。要设置校验和的目标文件不存在Artfactory

因此,听起来好像需要为我们试图部署的md5设置目标文件(md5是校验和的文件),但我在上传界面的任何地方都没有看到这样的属性


是否可以在Artifactory中执行此操作?如果可以,如何执行?

正如您所提到的,Artifactory知道所有工件的校验和(它们不存储在文件中,但始终可以通过向任何文件名添加.md5或.sha1来访问)。 您不能存储另一个正确的校验和,因为只有一个正确的校验和(Artifactory已经知道它存储了文件)

因此,没有理由(也没有办法)将md5和sha1文件部署到Artifactory。

您可以将存储库的配置为:

  • 根据客户端校验和进行验证(默认)-如果客户端未发送 已部署工件的有效校验和,则Artifactory将 将404(未找到)错误返回给尝试访问该错误的客户端 校验和。如果客户端已发送校验和,但与 在服务器上计算的结果将返回409 (冲突)错误,直到部署有效的校验和
  • 信任服务器生成的校验和-Artifactory将不会验证 客户端发送的校验和将信任服务器的本地 计算校验和。上传的工件立即可用 供使用,但完整性可能会受到影响

  • 如果部署的.jar文件名为
    file1.jar
    ,则Artifactory希望.md5文件名为
    file1.jar.md5
    。如果部署名为
    file1.md5
    的.md5文件,Artifactory将期望在同一路径中找到名为
    file1
    的文件,它不会在您的情况下找到,因此会出现错误。

    虽然Artifactory确实不允许您上载
    .md5
    .sha1sum
    文件,但您可以很容易地绕过此限制,因为这些文件无论如何都是由Artifactory生成的

    确保对要上载的文件列表进行排序,以确保签名文件位于文件本身之后 使用此选项上载文件

    您将看到限制不再存在,因为Artifactory将生成校验和,并且上载脚本将在执行上载之前验证校验和是否匹配


    另一个好处是,这种上传方法速度更快,因为它不会将同一个文件上传两次到服务器,也允许您运行多次而不会出现问题。

    这家伙想存储校验和文件,这是一个完美有效的用例。以下是正确答案——主要是您需要先上传原始文件。上载校验和文件是不需要的,因为已经生成了校验和文件。我试过了,效果很好。