Sonarqube TFS任务返回错误(401)未授权在一个项目上而不是其他项目

时间:2017-10-13 08:12:21

标签: tfs sonarqube sonarqube-scan tfs2017

我们在TFS 2017服务器上使用了Sonarqube大约2个月。总体而言,它非常有用,但几周前,由于Sonarqube返回401错误(未经授权),我们的一个版本开始失败。

  

2017-10-12T15:11:19.7921253Z ## [错误] 16:11:19.729无法请求和解析“http://sonarqube.local:9000/api/settings/values?component=MYPROJECTNAME%3Amaster”:远程服务器返回错误:(401)未经授权。

     

2017-10-12T15:11:19.7921253Z ## [错误] 16:11:19.729无法在连接SonarQube服务器时进行授权。检查您的凭据,然后重试。

这个奇怪的是,其他项目的其他构建工作正常,使用相同的API令牌。我甚至在失败的项目中创建了一个新的Sonarqube端点,然后再次在一个已知的好项目中 - 再次在两者上使用相同的API密钥 - 只是为了发生同样的事情。一个失败,上面的错误,另一个很好。

我认为这可能是sonarqube本身的安全/许可选项,所以我尝试创建一个全新的sonarqube项目但又一次 - 一个TFS项目失败,而另一个TFS项目指向这个新项目时成功。

我怀疑这个问题源于TFS项目的安全设置,但是在将一个好的项目与糟糕的项目进行比较之后,没有任何事情可以告诉我原因可能是什么 - 它们似乎设置相同。我在良好的构建和坏构建上启用了调试并比较了输出。据我所知,两者之间唯一真正的区别是“失败”构建从某个地方获取了一个sonar.password,而良好的构建则没有:

好:

  

2017-10-12T15:13:07.1067146Z ## [debug]已处理:## vso [task.setvariable variable = MSBuild.SonarQube.ServerPassword;]

           

2017-10-12T15:13:07.2785974Z ## [debug] arguments = / c“”Y:\ 2017_agent_work_tasks \ SonarQubeScannerMsBuildBegin_15b84ca1-b62f-4a2a-a403-89b77a063157 \ 3.0.2 \ SonarQubeScannerMsBuild \ MSBuild.SonarQube.Runner .exe“begin / k:”MYPROJECTNAME“/ n:”MYPROJECTNAME“/v:"20171012.7”/d:sonar.host.url="http://sonarqube.local:9000/"/d:sonar.login= ******** /d:sonar.cs.vscoveragexml.reportsPaths="***.coveragexml“/d:sonar.branch="master”“

为:

  

2017-10-12T15:11:19.5733714Z ## [debug]已处理:## vso [task.setvariable variable = MSBuild.SonarQube.ServerPassword;] ********

           

2017-10-12T15:11:19.5733714Z ## [debug]路径:Z:\ 2017_agent_work_tasks \ SonarQubeScannerMsBuildBegin_15b84ca1-b62f-4a2a-a403-89b77a063157 \ 3.0.2 \ SonarQubeScannerMsBuild \ MSBuild.SonarQube.Runner.exe   2017-10-12T15:11:19.5733714Z ## [debug]参数:begin / k:“MYPROJECTNAME”/ n:“MYPROJECTNAME”/v:"20171012.3“/d:sonar.host.url="http:// sonarqube.local:9000 /“/ d:sonar.login =******** /d:sonar.password=******** /d:sonar.cs.vscoveragexml.reportsPaths="* **。coveragexml“/d:sonar.branch="master”

(注意:虽然在这种情况下,不同的构建代理程序运行良好/不良,但代理程序是相同的,我已经确认“好”项目对我们所有的代理程序都有效,而“坏”项目失败则相同结果所有代理商。)

但是,我不知道从哪里获取此密码 - 存储库中没有sonar.properties文件。为了绝对肯定,我克隆了失败的TFS项目的存储库,将其推入到正在运行的TFS项目的存储库中,复制了构建并且它正常工作。

我已经检查了Sonarqube本身的日志,但这些日志并没有帮助

我可以错过什么?

2017年TFS为15.117.26714.0

Sonarqube是6.5.0.27846

Sonarqube任务版本是3.0.2

编辑:我已经设法通过编辑构建任务来获取临时解决方法,以便不将sonar.password插入命令行,这样可行。这确实证明了根本问题是将这个神秘密码从“某个地方”拉出来的任务,但我仍然不知道它将在哪里捡起它。我找不到有关MSBuild.SonarQube.ServerPassword

集的更多信息

1 个答案:

答案 0 :(得分:3)

基于(401)未经授权。一般而言,您需要在TFS中的SonarQube服务端点中指定身份验证令牌:click!要在SonarQube中获取用户令牌,请关注these steps但是,根据您已经完成的故障排除和一个项目的工作,另一个不起作用,这与你的问题无关。

请确保SonarQube.Analysis.xml中的sonar.loginsonar.password属性已被注释掉,否则将无法使用该令牌。

还建议您比较良好构建和错误构建的构建定义。另一种方法是仅为坏项目的声纳qube相关任务创建新的构建定义。要查看身份验证是否有效,如果问题与构建定义相关,则会缩小范围。