带有校验和的人工上传

Artifactory upload with checksum

如果您将工件上传到 Artifactory 但不提供校验和,它会发出此警告:

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

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

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

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

沙1

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

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  }')

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 }')
ARTIFACT_SHA1_CHECKSUM=$(shasum -a 1 foo.zip | awk '{ print  }')
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

由于不允许我发表评论,我将post澄清作为答复。

表明 Deploy Artifact by Checksum API 是关于带校验和验证上传的文档。但这仅适用于上传已存在于 Artifactory 中的工件。 As documented,它将拒绝带有 404 的新工件上传。

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

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

    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