无法部署文件'.md5'。设置校验和的目标文件不存在神器 - JFrog

时间:2014-05-05 17:30:19

标签: deployment jar md5 checksum artifactory

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

但是,当我们尝试使用Bamboo的Artifactory Gradle Plugin或直接手动将文件上传到Artifactory时,我们会收到错误:

无法部署文件'filename.md5'。设置校验和的目标文件不存在神器

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

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

3 个答案:

答案 0 :(得分:4)

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

  1. 验证客户端校验和(默认) - 如果客户端尚未发送 一个已部署的工件的有效校验和然后Artifactory将 将404(未找到)错误返回给尝试访问该客户端的客户端 校验和。如果客户端已发送校验和,但它与之冲突 在服务器上计算的那个然后Artifactory将返回409 (冲突)错误,直到部署了有效的校验和。
  2. 信任服务器生成的校验和 - Artifactory将无法验证 客户端发送的校验和,将信任本地服务器 计算的校验和。上传的工件立即可用 使用,但完整性可能会受到影响。
  3. 如果部署的.jar文件名是file1.jar,则Artifactory要求.md5文件名为file1.jar.md5。如果部署名为file1.md5的.md5文件,Artifactory将在同一路径中找到名为file1的文件,在您的情况下将找不到该文件,从而导致错误。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

请确保sort要上传的文件列表,以确保您的签名文件位于文件本身之后 使用此Artifactory bash upload with checksums example以上传文件。

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

这样做的另一个好处是这种上传方法要快得多,因为它不会将同一文件两次上传到服务器,也允许你多次运行它而没有问题。