GitLab CI 作业 artifacts 无法上传的可能原因有哪些?
GitLab CI 作业无Artifacts上传排查思路
- 先定位触发阶段:搜索作业完整执行日志的
Uploading artifacts关键词- 若无该关键词,说明Runner未触发上传逻辑,优先排查Runner配置、作业权限、规则拦截问题
- 若出现该关键词但伴随
No files to upload提示,说明路径匹配未命中任何符合要求的文件,优先排查文件路径与通配符配置
- 验证文件存在性与路径合法性:
- 在作业
script段的最后一行添加ls -laR ${CI_PROJECT_DIR}命令,打印项目根目录下的完整文件结构,确认是否确实生成了.json后缀文件,以及文件的实际存放路径 - 若作业配置了
working_directory自定义工作目录,所有相对路径的通配符都会基于该目录匹配,而非默认的${CI_PROJECT_DIR},需确认路径匹配逻辑是否适配自定义目录
- 在作业
- 排查配置规则冲突:
artifacts:exclude规则优先级高于paths规则,检查是否配置了排除规则命中了需要上传的json文件- 检查作业是否通过
extends继承了其他CI模板,或者存在全局artifacts配置,是否存在冲突的路径/排除规则覆盖了当前作业的配置 - GitLab通配符遵循doublestar匹配规范,
**/*.json才代表所有层级子目录下的json文件,单独使用**.json属于不规范写法,无法正常匹配嵌套目录下的文件
- 检查作业是否通过
- 排查Runner与权限问题:
- 确认Runner版本与GitLab服务端版本兼容,过旧版本的Runner不支持在artifacts路径中解析
${CI_PROJECT_DIR}这类环境变量,也存在通配符匹配的已知bug - 检查作业执行用户对生成的json文件是否有读权限,无读权限的文件会被Runner直接跳过,不会纳入artifacts
- 检查项目设置中的最大artifacts大小限制,若待上传文件总大小超出限制会被服务端拦截
- 确认Runner版本与GitLab服务端版本兼容,过旧版本的Runner不支持在artifacts路径中解析
- 特殊场景验证:
- 若作业配置了
dependencies、needs参数,确认是否存在逻辑异常导致当前作业的artifacts上传流程被跳过 - 若使用Docker Runner,确认容器内生成的文件是否被挂载卷覆盖,或者未正确写入到
${CI_PROJECT_DIR}路径下就被销毁
- 若作业配置了
内容的提问来源于stack exchange,提问作者123
相关产品推荐
相关产品推荐

