【问题标题】:Artifactory upload with checksum带有校验和的工件上传
【发布时间】:2017-02-21 21:50:17
【问题描述】:

如果您将工件上传到 Artifactory 并且未提供校验和,则会发出以下警告:

如何使用curl 上传并包含校验和?

【问题讨论】:

  • 我知道您专门询问了有关使用 curl 上传的问题,并且您已经得到了答案,但如果它与您相关,当使用 JFrog CLI 上传时,它会自动计算校验和并将其附加到上传请求。

标签: curl artifactory checksum


【解决方案1】:

此功能目前没有很好的文档记录,在此页面上可以找到一个示例:

https://www.jfrog.com/knowledge-base/what-are-client-checksum-server-checksum-and-checksum-policy-in-local-repositories/

只需在 curl 命令中添加以下内容:"--header "X-Checksum-<type>:${CHECKSUM}"

Sha1

CHECKSUM=$(shasum -a 1 foo.zip | awk '{ print $1 }')

curl --header "X-Checksum-Sha1:${CHECKSUM}" --upload-file "foo.zip -u "admin:<apikey>" -v https://artifactory.example.com/foo/

MD5

CHECKSUM=$(md5sum foo.zip | awk '{ print $1 }')

curl --header "X-Checksum-MD5:${CHECKSUM}" --upload-file "foo.zip -u "admin:<apikey>" -v https://artifactory.example.com/foo/

或者同时提供两个校验和

ARTIFACT_MD5_CHECKSUM=$(md5sum foo.zip | awk '{print $1}')
ARTIFACT_SHA1_CHECKSUM=$(shasum -a 1 foo.zip | awk '{ print $1 }')
curl --upload-file "foo.zip" \
--header "X-Checksum-MD5:${ARTIFACT_MD5_CHECKSUM}" \
--header "X-Checksum-Sha1:${ARTIFACT_SHA1_CHECKSUM}" \
-u "admin:<apikey>" \
-v https://artifactory.example.com/foo/

不幸的是,使用 sha256 上传不适用于 curl because of a bug

【讨论】:

【解决方案2】:

由于我不允许发表评论,因此我将发布澄清作为答案。

This comment 建议 Deploy Artifact by Checksum API 是有关带有校验和验证的上传的文档。但这仅对 Artifactory 中已存在的工件的上传有效。 As documented,它将拒绝带有 404 的新工件上传。

【讨论】:

  • 如果您尝试使用标题 -H "X-Checksum-Deploy:true"。如果是这种情况,它将仅在内容存在时上传。只需尝试不使用此标头或使用 -H "X-Checksum-Deploy:false"
【解决方案3】:

这在 7.4.3 中适用于 MD5、SHA1 和 SHA256。

for file in $(find a_folder -type f)
do
    ARTIFACT_MD5_CHECKSUM=$(md5sum $file | awk '{print $1}')
    ARTIFACT_SHA1_CHECKSUM=$(shasum -a 1 $file | awk '{ print $1 }')
    ARTIFACT_SHA256_CHECKSUM=$(shasum -a 256 $file | awk '{ print $1 }')

    echo curl --upload-file $file \
            --header "X-Checksum-MD5:${ARTIFACT_MD5_CHECKSUM}" \
            --header "X-Checksum-Sha1:${ARTIFACT_SHA1_CHECKSUM}" \
            --header "X-Checksum-Sha256:${ARTIFACT_SHA256_CHECKSUM}" \
            -u "admin:${APIKEY}" \
            -v http://URL/$file
done

【讨论】:

  • 这行得通。要使警告消失,从 Artifactory 6.18.1 开始只需要 SHA1 和 SHA256。接受 MD5 校验和,但不是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多