0

你能帮我解决下面的问题吗?因为我正在使用具有秘密管理器优势但面临问题的云构建进行声纳扫描仪。并遵循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

尝试了不同的项目,但找不到解决方案。

如果你们在这方面帮助我,我将不胜感激。谢谢

4

2 回答 2

1

我其实和你有同样的问题。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 映像。您可以在拉取请求中找到该图像。

于 2021-02-10T17:23:38.463 回答
0

我在 Cloud Build 中找到使用 sonar-scanner 的示例。看来声纳扫描仪应该在没有的情况下使用bash

我认为你应该删除entrypoint: 'bash' and '-c'

类似的方法是在这个SO question中。它应该解决这个错误。

于 2021-02-10T08:58:29.400 回答