You need to enable JavaScript to run this app. 如何在AWS控制台手动触发带git子模块的CodeBuild及报错处理
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS控制台手动触发带git子模块的CodeBuild及报错处理

AWS控制台手动触发带Git子模块CodeBuild项目的操作流程
  • 进入目标CodeBuild项目的详情页面,点击右上角「开始构建」按钮唤起配置面板
  • 源配置栏默认选中项目已绑定的Bitbucket仓库,在源版本输入框填写需要触发的分支名(如本例的develop)
  • 展开「额外配置」板块,核对两项核心拉取设置:
    • 确认「拉取Git子模块」选项保持勾选状态(该选项是webhook自动触发时的默认生效配置)
    • 确认构建规范配置为“使用源代码中的buildspec文件”,文件路径和项目配置保持一致
  • 核对环境变量、参数存储引用(如本例的build_ssh_key)的取值与webhook触发场景完全一致,点击「开始构建」提交任务
手动触发时SSH Agent报错的根本原因

报错提示创建SSH agent失败:请求SSH agent但未指定SSH_AUTH_SOCK的根源来自两类触发模式的源码拉取初始化逻辑差异:

  • Webhook自动触发场景:CodeBuild平台会自动匹配你在项目源配置中绑定的Bitbucket SSH凭据,在源码拉取的前置流程中自动完成SSH agent启动、SSH_AUTH_SOCK环境变量注入、SSH密钥加载的全流程,因此子模块拉取可以正常鉴权执行
  • 控制台手动触发场景:当你在配置面板中未正确关联对应Bitbucket源的SSH凭据时,平台不会自动执行上述SSH初始化流程,子模块拉取逻辑在需要SSH鉴权时,会尝试调用系统SSH agent,但由于前置步骤没有初始化agent、未注入SSH_AUTH_SOCK环境变量,就会直接抛出该报错
  • 补充说明:你当前的buildspec仅在env.parameter-store段引用了存放在参数存储中的SSH密钥,并没有在buildspec内主动编写SSH agent初始化的命令,这部分初始化动作完全依赖CodeBuild平台在源码拉取阶段的自动配置,一旦触发路径没有匹配上对应的自动配置,就会出现环境变量缺失的问题
报错修复方案
  • 手动触发前,在源配置板块确认已正确关联Bitbucket仓库对应的SSH凭据,不要选择无凭据的匿名拉取模式
  • 为了避免不同触发路径的初始化逻辑差异,可以在buildspec的预构建阶段主动补充SSH agent加载的固定命令,让SSH初始化不依赖平台自动配置:
    version: 0.2
    env:
      parameter-store:
        build_ssh_key: "build_ssh_key"
    phases:
      pre_build:
        commands:
          - eval $(ssh-agent -s)
          - echo "$build_ssh_key" | ssh-add -
          - mkdir -p ~/.ssh
          - ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
    
  • 检查手动触发面板的「拉取Git子模块」开关是否为开启状态,避免面板默认配置差异导致拉取逻辑偏离webhook触发时的行为

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 02:45:04