无法使用 Google Cloud 构建从 cloudbuild.yaml 运行 Sonarqube 分析
Posted
技术标签:
【中文标题】无法使用 Google Cloud 构建从 cloudbuild.yaml 运行 Sonarqube 分析【英文标题】:Unable to run Sonarqube analysis from cloudbuild.yaml with Google Cloud build 【发布时间】:2019-11-26 23:26:20 【问题描述】:我已将我的 github 存储库与 Google 云构建集成,以便在 github 中的每次提交后自动构建一个 docker 映像。这工作正常,但现在我想在 Docker 映像构建过程之前对代码进行 sonarqube 分析。因此,我已将 sonarqube 部分集成到 cloudbuild.yaml 文件中。但无法运行。
我已按照链接中提供的步骤操作:https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/sonarqube
并将声纳扫描仪图像推送到谷歌容器注册表中。 我的 sonarqube 服务器在 GCP 实例上运行。在 github 中的每次提交时,cluod build 都会自动触发并开始执行 cloudbuild.yaml 文件中提到的任务
Dockerfile:
FROM nginx
COPY ./ /usr/share/nginx/html
cloudbuild.yaml:
steps:
- name: 'gcr.io/PROJECT_ID/sonar-scanner:latest'
args:
- '-Dsonar.host.url=sonarqube_url'
- '-Dsonar.login=c2a7631a6e402c338739091ffbc30e5e3d66cf19'
- '-Dsonar.projectKey=sample-project'
- '-Dsonar.sources=.'
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/PROJECT_ID/html-css-website', '.' ]
images:
- 'gcr.io/PROJECT_ID/html-css-website'
错误:
Status: Build failed
Status detail: failed unmarshalling build config cloudbuild.yaml: yaml: line 3: did not find expected key
【问题讨论】:
请将您的 YAML 内容用适当的格式标记括起来:该错误表明您的 YAML 错误,但以当前格式无法读取。 感谢@mc1arke,格式正确。这只是在这里输入问题。这里 PROJECT_ID 表示我的实际 GCP 项目 ID,sonarqube_url 表示我的 sonarqube 实例的实际 url 【参考方案1】:如果您粘贴的格式实际上与您在项目中的格式匹配,那么您的问题是第一个 steps
块中的 args
属性缩进太远:它应该与 @987654323 对齐@ 上面的属性。
---
steps:
- name: "gcr.io/PROJECT_ID/sonar-scanner:latest"
args:
- "-Dsonar.host.url=sonarqube_url"
- "-Dsonar.login=c2a7631a6e402c338739091ffbc30e5e3d66cf19"
- "-Dsonar.projectKey=sample-project"
- "-Dsonar.sources=."
- name: "gcr.io/cloud-builders/docker"
args:
- "build"
- "-t"
- "gcr.io/PROJECT_ID/html-css-website"
- "."
images:
- "gcr.io/PROJECT_ID/html-css-website"
【讨论】:
谢谢,问题得到了解决。以上是关于无法使用 Google Cloud 构建从 cloudbuild.yaml 运行 Sonarqube 分析的主要内容,如果未能解决你的问题,请参考以下文章
Python Google Cloud Function 记录严重性和重复项
Google Cloud 上使用 Pub/Sub 的主/从模式
Google Cloud Function - ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub”
ImportError:无法从“google.cloud”导入名称“tasks_v2”