GitLab CI中用Curl/Wget获取文件遇404 Not Found错误求助
排查GitLab CI中Curl/Wget获取文件返回404的问题
1. 修复URL格式错误
从你的配置和日志能看到,Curl命令的URL存在语法错误:
# 错误的URL片段 xxx%2Dxxx%2Fxxx%2Fxxx%2Dxxx%2Fxxx%2Etxt?/raw?ref=${CI_COMMIT_BRANCH}
这里的?/raw是错误写法,正确的API路径应该把/raw作为路径的一部分,而非用问号分隔。修正后的Curl命令:
- 'VERSION="$(curl --header "PRIVATE-TOKEN: ${PERSO_ACCESS_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/repository/files/xxx%2Dxxx%2Fxxx%2Fxxx%2Dxxx%2Fxxx%2Etxt/raw?ref=${CI_COMMIT_BRANCH}")"'
2. 核对文件路径编码的准确性
确认URL编码后的路径和仓库中实际文件路径完全匹配:
- 若仓库中文件路径是
xxx-xxx/xxx/xxx-xxx/xxx.txt,对应的URL编码应为xxx%2Dxxx%2Fxxx%2Fxxx%2Dxxx%2Fxxx%2Etxt,你当前的编码逻辑是对的,但建议手动核对层级、文件名的拼写和符号,避免疏漏。
3. 检查访问令牌的权限
确保PERSO_ACCESS_TOKEN具备仓库读取权限:
- 创建令牌时必须勾选
read_repository权限范围。 - 可在本地用该令牌测试API请求,验证是否能正常获取文件:
curl --header "PRIVATE-TOKEN: 你的令牌值" "https://gitlab.com/api/v4/projects/34115373/repository/files/xxx%2Dxxx%2Fxxx%2Fxxx%2Dxxx%2Fxxx%2Etxt/raw?ref=你的分支名"
4. 确认分支变量的有效性
从Wget日志看到ref=$Develop,说明${CI_COMMIT_BRANCH}变量可能未正确替换,或分支名存在大小写问题:
- 在CI脚本中添加
echo ${CI_COMMIT_BRANCH},确认变量实际值。 - 确保分支名的拼写、大小写和仓库中的分支完全一致(比如是
develop而非Develop)。
5. 验证API路径合规性
GitLab获取文件原始内容的标准API路径格式为:
GET /projects/:id/repository/files/:file_path/raw
ref是必填查询参数,用于指定文件所在的分支、标签或提交SHA,确保你的请求完全遵循该格式。
内容的提问来源于stack exchange,提问作者xfusion
相关产品推荐
相关产品推荐

