You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Artifactory输出md5sum等命令式校验和格式?

让Artifactory输出类校验命令格式的解决方案

我刚好碰过类似的需求,Artifactory默认确实只返回纯哈希值,不过有几个实用的办法能让它输出下游系统需要的哈希值 文件名格式:

1. 用REST API+脚本拼接(轻量无配置)

Artifactory的存储API能返回文件的哈希集合和文件名,你可以用简单的脚本把这俩拼起来,完全模拟md5sum这类命令的输出。

比如用bash+curl+jq的组合(需要提前安装jq工具):

# 替换成你的Artifactory实例地址、仓库名和文件路径
ARTIFACTORY_ADDR="http://your-artifactory-server/artifactory"
TARGET_REPO="your-target-repo"
FILE_LOC="packages/app-v1.0.tar.gz"

# 拉取文件信息并拼接成md5sum格式
curl -s "$ARTIFACTORY_ADDR/api/storage/$TARGET_REPO/$FILE_LOC" | jq -r '.checksums.md5 + "  " + .name'

运行后输出就是abcdef123456... app-v1.0.tar.gz,和md5sum命令的结果一模一样。同理,把.checksums.md5换成.sha1、.sha256就能生成对应格式的校验串。

2. 用Artifactory用户插件直接返回格式(无需下游处理)

如果下游系统没法做额外拼接,想让Artifactory直接返回目标格式,那可以写个简单的Groovy用户插件扩展它的API:

示例插件代码

创建checksum-formatter.groovy文件,放到Artifactory安装目录的etc/plugins文件夹里:

executions {
    getFormattedChecksums(httpMethod: 'GET') { params ->
        def repoName = params.repo
        def filePath = params.path
        def targetFile = repositories.getFile(repoName, filePath)

        if (!targetFile.exists()) {
            status = 404
            message = "Requested file not found"
            return
        }

        def checks = [
            md5: targetFile.getMd5(),
            sha1: targetFile.getSha1(),
            sha256: targetFile.getSha256(),
            sha512: targetFile.getSha512()
        ]
        def fileName = targetFile.getName()
        def outputContent = new StringBuilder()

        checks.each { algo, hash ->
            outputContent.append("${hash}  ${fileName}\n")
        }

        status = 200
        contentType = "text/plain"
        output = outputContent.toString().trim()
    }
}

重启Artifactory或者通过API加载插件后,就可以用这个URL调用:
GET /api/plugins/execute/getFormattedChecksums?params=repo=your-repo;path=packages/app-v1.0.tar.gz
返回的内容就是:

md5哈希值  app-v1.0.tar.gz
sha1哈希值  app-v1.0.tar.gz
sha256哈希值  app-v1.0.tar.gz
sha512哈希值  app-v1.0.tar.gz

完全符合下游系统的解析要求。

3. 关于内置配置的说明

目前Artifactory没有内置的查询参数或者开关直接返回这种格式,所以上面两种是最靠谱的方案。如果能接受下游做简单处理,优先选第一种;如果必须让Artifactory直接输出,就用用户插件的方式。


内容的提问来源于stack exchange,提问作者LKJS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:05:40