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

AWS CodePipeline部署到Elastic Beanstalk时CodeBuild的Git子模块丢失

原因分析
  • 核心问题是构建产物路径不匹配:你在pre_build阶段执行Git操作拉取的主仓库代码、子模块文件都存储在CodeBuild的默认工作目录$CODEBUILD_SRC_DIR(对应日志里的/codebuild/output/src/路径)下,但你在artifacts配置中指定的打包根目录为outputDirectory,整个构建流程中没有任何命令将拉取到的完整代码(含子模块)移动或复制到outputDirectory目录下,因此打包时仅能拿到outputDirectory下已有的空目录结构,无法获取子模块的实际文件。
  • 次要触发可能:如果你已手动同步代码到outputDirectory仍有空目录问题,是因为CodeBuild默认打包规则会自动过滤所有.git开头的文件/目录,子模块目录下的.git指针文件被过滤后,打包逻辑会误将子模块目录识别为无有效内容的空目录,跳过内部文件的打包。
  • 额外注意:你当前配置里echo "$config_file" > ~/.ss+-h/config存在笔误,需改为~/.ssh/config避免后续SSH相关操作异常。
修复方案
  • 调整路径配置:在pre_build阶段拉取完子模块后,新增命令将所有代码同步到指定的产物目录,示例命令如下:
mkdir -p outputDirectory && cp -r ./* outputDirectory/
  • 开启隐藏文件打包权限:在artifacts配置段添加dot: true参数,允许打包隐藏文件,避免子模块的.git指针被过滤,修改后的产物配置示例:
artifacts:
  base-directory: outputDirectory
  files:
    - '**/*'
    - .ebextensions/**/*
  dot: true

内容的提问来源于stack exchange,提问作者Corn Guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:00