通过Jfrog Artifactory远程仓库下载GitHub Grafana发布包遇404求助
问题描述
我想用JFrog Artifactory从GitHub Releases下载Grafana k6的v0.42.0版本Linux包,目标包地址是https://github.com/grafana/k6/releases/download/v0.42.0/k6-v0.42.0-linux-amd64.tar.gz。我创建了名为grafana-generic的通用远程仓库,把远程URL设为https://github.com,但访问https://myrepo/artifactory/grafana-generic/grafana/k6/releases/download/v0.42.0/k6-v0.42.0-linux-amd64.tar.gz时,收到404错误:
{
"errors": [
{
"status": 404,
"message": "Item grafana-generic-cache:grafana/k6/releases/download/v0.42.0/k6-v0.42.0-linux-amd64.tar.gz does not exist"
}
]
}
问题原因
你配置的远程仓库根URL逻辑不匹配GitHub Releases的资源跳转规则。虽然表面上Artifactory拼接后的路径和目标地址一致,但GitHub Releases的资源实际通过CDN跳转,通用仓库默认处理逻辑无法正确解析这种跳转,或缓存了错误的404响应。
解决方法
方法一:修改远程仓库根URL
直接把grafana-generic远程仓库的URL改成https://github.com/grafana/k6/releases/download/,之后请求路径只需保留版本和包名部分:
https://myrepo/artifactory/grafana-generic/v0.42.0/k6-v0.42.0-linux-amd64.tar.gz
这种方式让Artifactory直接请求GitHub的真实资源地址,完全匹配目标路径。
方法二:添加路径重写规则(保留原URL)
如果不想修改仓库根URL,可在grafana-generic仓库的路径重写配置中添加规则:
- 源路径:
^/grafana/k6/releases/download/(.*)$ - 目标路径:
/grafana/k6/releases/download/$1
确保仓库远程URL仍为https://github.com,并开启路径重写功能。该规则会让Artifactory正确映射请求路径,适配GitHub的跳转逻辑。
额外步骤:清理缓存
无论用哪种方法,都建议先清理grafana-generic-cache的缓存内容,避免之前的404错误缓存干扰新请求。在Artifactory控制台找到对应缓存仓库,删除目标路径的缓存项即可。
内容的提问来源于stack exchange,提问作者Vowneee

