如何将CodeBuild的buildspec.yml从根目录迁移至子目录
问题
当前状态
CodeBuild原本正常运行,buildspec.yml位于代码根目录。当前目录结构:
buildspec.yml net-core └── net-core-api
迁移计划
计划将buildspec.yml迁移到子目录,目标结构:
net-core └── net-core-api └── buildspec.yml
错误信息
更新路径指向新位置后,CodeBuild报错:
[Container] 2023/08/28 18:14:26 CODEBUILD_SRC_DIR=/codebuild/output/src2839811517/src
[Container] 2023/08/28 18:14:26 Phase complete: DOWNLOAD_SOURCE State: FAILED
[Container] 2023/08/28 18:14:26 Phase context status code: YAML_FILE_ERROR Message: stat /codebuild/output/src2839811517/src/net-core/net-core-api/buildspec.yml: no such file or directory
已尝试无效路径
net-core/net-core-api/buildspec.yml./net-core/net-core-api/buildspec.yml/net-core/net-core-api/buildspec.yml
解决方案
1. 确认仓库内文件的实际状态
- 本地执行
git ls-files net-core/net-core-api/buildspec.yml,验证文件已被Git追踪 - 登录代码托管平台查看仓库目录,确认
buildspec.yml确实存在于net-core/net-core-api/路径下,未被.gitignore排除
2. 修正CodeBuild的Buildspec路径配置
在CodeBuild项目配置的Buildspec部分,填写相对于仓库根目录的路径:net-core/net-core-api/buildspec.yml
- 不要添加开头的
/,否则会被解析为服务器绝对路径,超出仓库挂载的CODEBUILD_SRC_DIR范围 - 不要添加
./,多余前缀可能引发解析异常
3. 检查路径大小写匹配
CodeBuild运行在Linux环境,路径区分大小写:
- 确保配置中的路径大小写和仓库内实际路径完全一致(比如
Net-Core和net-core是不同路径)
4. 清理缓存后重试
临时关闭CodeBuild项目的缓存配置,重新触发构建:
- 缓存残留可能导致旧路径的缓存文件干扰新路径的解析,测试通过后可重新开启缓存
内容的提问来源于stack exchange,提问作者Master
相关产品推荐
相关产品推荐

