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

使用CodePipeline、CodeBuild、CodeCommit完整克隆失败排查

问题排查:CodePipeline+CodeCommit使用CODEBUILD_CLONE_REF时仓库找不到报错

核心问题

配置OutputArtifactFormat = "CODEBUILD_CLONE_REF"实现完整Git克隆时,CodeBuild阶段出现repository not found for primary source and source version xxxxx错误,但默认CODE_ZIP格式正常工作。

排查与解决方案

1. 补充CodeBuild角色的缺失权限

CODEBUILD_CLONE_REF模式下,CodeBuild需要额外的CodeCommit权限来获取分支和提交信息,仅codecommit:GitPull和codecommit:GetRepository不够。需为CodeBuild服务角色添加以下权限:

{
  "Effect": "Allow",
  "Action": [
    "codecommit:GitPull",
    "codecommit:GetRepository",
    "codecommit:GetBranch",
    "codecommit:GetCommit"
  ],
  "Resource": "arn:aws:codecommit:你的区域:你的账号ID:你的仓库名"
}

2. 检查Source Action的Assume Role权限

你在CodePipeline的Source action中指定了role_arn = var.assume_role_arn,这个角色需要满足两个条件:

  • 信任策略允许CodePipeline扮演它:信任策略需包含codepipeline.amazonaws.com作为Principal
  • 自身拥有CodeCommit访问权限:需要配置codecommit:GetRepository、codecommit:GetBranch、codecommit:GetCommit权限,因为CodePipeline需要先获取仓库克隆元数据传递给CodeBuild

3. 验证仓库资源ARN的准确性

确保所有权限策略中的CodeCommit仓库ARN完全匹配,包括区域、账号ID、仓库名称,注意CodeCommit仓库名是大小写敏感的,检查var.git_repo_source是否与实际仓库名完全一致。

4. 确认KMS密钥的访问权限

由于你使用了KMS加密Artifact Store的S3桶,CodeBuild角色需要具备该KMS密钥的解密权限:

{
  "Effect": "Allow",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "你的KMS密钥ARN"
}

CODEBUILD_CLONE_REF模式下,CodePipeline会将仓库克隆信息加密存储在S3,CodeBuild需要解密才能获取有效克隆地址。

5. 检查CodeBuild项目的Source配置

确保CodeBuild项目的Source类型为CODEPIPELINE,且没有多余的location配置(你当前注释掉location的操作是正确的,无需修改),避免多个源配置冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:52:57