我正在尝试将 SonarQube 与 Azure Devops 集成。我已在 SonarQube 管理员中完成配置(管理 > 配置 > 常规设置 > ALM 集成,选择 Azure DevOps 选项卡,然后单击创建配置按钮)并在 Azure Devops 中设置服务连接。还配置了 SonarScanner 属性文件。
sonar.projectkey= Project
sonar.projectName= Project name is given
sonar.login = token from SonarQube
使用 cmd 命令“sonar-scanner -h”验证 Sonar 扫描仪。 sonar-scanner.bat 文件也已成功执行。 在 Azure devops 构建管道中,已配置分支 - 准备分析配置、运行代码分析和发布质量门结果。当我们运行管道时,它失败并出现以下错误。
ERROR: Not authorized. Please check the properties sonar.login and sonar.password.
ERROR: Error during SonarScanner execution
ERROR: Not authorized. Please check the properties sonar.login and sonar.password.
INFO: ------------------------------------------------------------------------
##[error]ERROR:
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.
ERROR:
下面是日志的最后几行
“GET /batch/file?name=sonar-scanner-engine-shaded-9.0.1.46107-all.jar HTTP/1.1” 200 - “-” “ScannerCLI/4.6.1.2450” “AXtcvnCkoRmL3dzQAADB”
“GET /api/settings/values.protobuf HTTP/1.1” 401 - “-” “ScannerCLI/4.6.1.2450” “AXtcvnCkoRmL3dzQAADC”
请帮助我解决上述错误。提前致谢。
最佳答案
终于,我成功了。
事实证明,您不需要将 sonar.login = token
放入 sonar-project.properties
中。
您需要做的是:
- 至 generate the token在 Sonar 一侧;
- 将其放置到 Azure DevOps 上的服务连接属性中:在 Azure DevOps 项目中,转到设置 > 服务连接,然后选择用于连接到 Sonar 的服务连接(如果您不这样做)有的话,也许您应该创建一个。它应该是
SonarQube
类型)。因此,在这种类型的服务连接的属性中,有一个 token 的占位符,您不会错过它。 - 最后,如果您的服务连接名为 SonarConnection,并且您的 Sonar 项目 key 为
My-Project
,那么您的 Azure管道将如下所示:
trigger:
- master
- staging
- dev
pool:
vmImage: ubuntu-latest
steps:
- task: SonarQubePrepare@5
inputs:
SonarQube: 'SonarConnection'
scannerMode: 'CLI'
configMode: 'file'
projectName: 'My Project'
projectKey: 'My-Project'
- task: SonarQubeAnalyze@5
- task: SonarQubePublish@5
inputs:
pollingTimeoutSec: '300'
(我还通过 Let'sEncrypt 证书使用 TLS 连接到我的 SonarQube 服务器。)
关于azure - Azure DevOps 中的 Sonar 扫描仪错误 - ERROR : Not authorized. 请检查属性 sonar.login 和 sonar.password,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68844897/