在Cloud Build中运行Sonar Scanner遇403权限错误求助
Cloud Build集成Sonar Scanner:解决403权限错误及配置指南
一、修复403权限错误
触发错误的核心原因是Cloud Build默认服务账号无目标Cloud Storage桶(gs://training_cloudbuild)的读写权限,按以下步骤处理:
- 找到Cloud Build默认服务账号,格式为
[项目编号]@cloudbuild.gserviceaccount.com,可在Cloud Build控制台「设置」页面查看 - 为该服务账号授予
Storage Object Admin角色,可针对单个桶或整个项目执行命令:
替换命令中的「你的项目ID」和「项目编号」为实际信息gcloud projects add-iam-policy-binding 你的项目ID \ --member="serviceAccount:[项目编号]@cloudbuild.gserviceaccount.com" \ --role="roles/storage.objectAdmin"
二、Cloud Build集成Sonar Scanner配置
假设已部署SonarQube实例(GCE托管或SonarCloud均可),按以下配置cloudbuild.yaml:
确保Cloud Build能访问SonarQube实例:
- 若为GCE部署的SonarQube,需在防火墙规则中允许Cloud Build的IP段访问SonarQube默认端口(9000)
- 若为SonarCloud,确认API密钥有效且已关联目标分析项目
编写
cloudbuild.yaml:steps: # 拉取代码(若从代码仓库自动触发构建,可省略此步) - name: 'gcr.io/cloud-builders/git' args: ['clone', '你的代码仓库地址'] # 运行Sonar Scanner执行代码扫描 - name: 'gcr.io/cloud-builders-community/sonarqube-scanner' args: - '-Dsonar.host.url=SonarQube实例地址' - '-Dsonar.projectKey=你的Sonar项目Key' - '-Dsonar.login=SonarQube API密钥' - '-Dsonar.sources=.'替换占位符为实际信息,如需添加额外Sonar扫描参数,直接追加到
args列表即可按需添加额外配置:
- 若需通过代理访问SonarQube,在
cloudbuild.yaml中加入环境变量:env: - 'HTTP_PROXY=代理地址' - 'HTTPS_PROXY=代理地址' - 私有代码仓库需提前在Cloud Build中配置仓库访问凭证
- 若需通过代理访问SonarQube,在
内容的提问来源于stack exchange,提问作者rakesh
相关产品推荐
相关产品推荐

