Gitlab CI上传多模块制品报outside build directory错误求助
问题原因
- GitLab CI 对制品路径有强制限制:仅允许上传**当前作业构建目录(即内置变量
$CI_PROJECT_DIR,对应你场景下的/home/gitlab-runner/builds/Gso-uWvA/0/www/project-infoserwis)**内的文件,你配置的project-root路径位于构建目录的上级,因此触发outside build directory警告,无法被收集。 - 克隆模块时使用了
../跳转路径,导致另外两个模块被存储到当前项目构建目录之外,不符合制品收集的路径要求。 - 硬编码写死绝对路径的配置方式本身不具备通用性,后续 runner 环境或项目路径变更后也会失效。
修复方案
- 优先调整模块克隆逻辑:不要使用
../跳转到上级目录创建模块,改为克隆到当前构建目录下的子目录,例如克隆到./project-root、./project-core,保证所有模块都在$CI_PROJECT_DIR范围内。 - 调整制品配置,使用相对路径代替硬编码的绝对路径,示例配置如下:
artifacts: paths: - ./project-infoserwis - ./project-root - ./project-core expire_in: 10 min
如果确实需要保留原有克隆到上级目录的逻辑,可以在构建脚本阶段先把外部模块复制到当前构建目录,再进行制品收集,示例配置:
script: # 原有构建逻辑执行完成后,复制外部模块到当前目录 - cp -r ../project-root ./ - cp -r ../project-core ./ artifacts: paths: - ./project-infoserwis - ./project-root - ./project-core expire_in: 10 min
内容的提问来源于stack exchange,提问作者Radek
相关产品推荐
相关产品推荐

