You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CodePipeline自动构建报错GIT_DISCOVERY_ACROSS_FILESYSTEM未设置

解决CodePipeline触发CodeBuild时的GIT_DISCOVERY_ACROSS_FILESYSTEM错误

核心原因

CodePipeline触发构建时,是把源码打包成压缩包传递给CodeBuild的,而非直接克隆Git仓库,所以构建环境中没有.git目录,执行git命令就会触发该错误。而手动触发CodeBuild时通常是直接拉取Git仓库,因此不会出现这个问题。

可行解决方案

方案1:构建脚本里手动初始化Git仓库(适合不需要完整Git历史的场景)

如果你的构建只需要执行简单git命令(比如获取分支名、提交哈希),可以在构建脚本开头添加以下命令:

# 初始化本地Git仓库
git init
# 关联你的远程Git仓库(替换为实际仓库URL)
git remote add origin <你的Git仓库地址>
# 拉取仓库元数据(仅拉取最新版本,无需完整克隆)
git fetch --depth=1
# 切换到当前构建对应的分支(使用CodeBuild自带环境变量$CODEBUILD_SOURCE_VERSION)
git checkout $CODEBUILD_SOURCE_VERSION

方案2:修改CodeBuild的源码获取方式

在CodeBuild项目配置中,将源码类型从CodePipeline改为直接关联你的Git仓库(如GitHub、GitLab)。但这种方式会绕过CodePipeline的源码传递流程,需要先确认是否符合你的流水线需求。

方案3:正确设置环境变量并切换到源码目录

如果必须保留CodePipeline触发方式,且之前设置环境变量无效,可能是变量未生效或脚本执行路径问题:

  • 在CodeBuild项目的环境变量中添加GIT_DISCOVERY_ACROSS_FILESYSTEM=true
  • 在构建脚本开头切换到源码目录(CodeBuild默认源码目录可通过$CODEBUILD_SRC_DIR环境变量定位):
cd $CODEBUILD_SRC_DIR

内容的提问来源于stack exchange,提问作者Andy K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:29:55