如何解决使用具有秘密管理器优势的云构建运行声纳扫描仪时出错
你能帮我解决下面的问题吗? 因为我正在使用云构建进行声纳扫描仪,具有秘密管理器的优势,但面临问题。 并遵循 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'
和 '-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。基于 this,我基于 Ubuntu 而不是 Alpine 创建了我自己的 Docker 镜像。您可以在 pull request 中找到该图像。
我发现了 this 在 Cloud Build 中使用声纳扫描仪的示例。似乎应该在没有 bash
我认为您应该删除 entrypoint: 'bash'
和 '-c'
。
类似的方法在这个 SO question 中。它应该可以解决这个错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。