google-cloud-build - 使用具有秘密管理器优势的云构建运行声纳扫描仪时出错
问题描述
你能帮我解决下面的问题吗?因为我正在使用具有秘密管理器优势但面临问题的云构建进行声纳扫描仪。并遵循https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets的相同步骤, 这是我的代码
steps:
- name: 'gcr.io/$_PROJECT_ID/sonar-scanner:latest'
entrypoint: 'bash'
args:
- '-c'
- '-Dsonar.host.url=http://sonar:9000/'
- '-Dsonar.login=$$USERNAME'
- '-Dsonar.password=$$PASSWORD'
- '-Dsonar.projectKey=$_BRANCH-analytics'
- '-Dsonar.sources=.'
secretEnv: ['USERNAME', 'PASSWORD']
dir: 'analytics'
availableSecrets:
secretManager:
- versionName: projects/project-id/secrets/sonar_pass/versions/1
env: 'PASSWORD'
- versionName: projects/project-id/secrets/sonar_user/versions/2
env: 'USERNAME'
tags: ['cloud-builders-community']
我面临的问题是:
bash: line 0: bash: -Dsonar.login=$USERNAME: invalid option name
ERROR
ERROR: build step 0 "gcr.io/project-id/sonar-scanner:latest" failed: step exited with non-zero status: 2
尝试了不同的项目,但找不到解决方案。
如果你们在这方面帮助我,我将不胜感激。谢谢
解决方案
我其实和你有同样的问题。entrypoint: 'bash'
使用and确实很重要'-c'
,否则 Cloud Build 无法识别来自密钥管理器的变量。
我的cloudbuild.yaml
步骤如下所示:
steps:
id: 'sonarQube'
name: 'gcr.io/$PROJECT_ID/sonar-scanner:latest'
entrypoint: 'bash'
args:
- '-c'
- |
sonar-scanner -Dsonar.host.url=<url> -Dsonar.login=$$SONARQUBE_TOKEN -Dsonar.projectKey=<project-key> -Dsonar.sources=.
secretEnv: ['SONARQUBE_TOKEN']
availableSecrets:
secretManager:
- versionName: projects/<project-id>/secrets/sonarqube-token/versions/latest
env: 'SONARQUBE_TOKEN'
我对最新的声纳扫描仪图像有一些问题,因为它使用了 alpine。我得到了下一个错误:jre-bin-java-not-found
即使图像有 Java。基于此,我创建了自己的基于 Ubuntu 而不是 Alpine 的 Docker 映像。您可以在拉取请求中找到该图像。