Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sonarqube TFS任务返回错误(401),在一个项目上未授权,但在其他项目上未授权_Tfs_Sonarqube_Sonarqube Scan - Fatal编程技术网

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

Sonarqube TFS任务返回错误(401),在一个项目上未授权,但在其他项目上未授权,tfs,sonarqube,sonarqube-scan,Tfs,Sonarqube,Sonarqube Scan,过去两个月,我们一直在TFS 2017服务器上使用Sonarqube。总的来说,它非常有用,但几周前,我们的一个构建开始失败,因为Sonarqube返回401错误(未经授权) 2017-10-12T15:11:19.7921253Z##[错误]16:11:19.729请求和分析“”失败:远程服务器返回错误:(401)未经授权 2017-10-12T15:11:19.7921253Z##[错误]16:11:19.729连接到SonarQube服务器时无法授权。请检查您的凭据,然后重试 奇怪的是,来

过去两个月,我们一直在TFS 2017服务器上使用Sonarqube。总的来说,它非常有用,但几周前,我们的一个构建开始失败,因为Sonarqube返回401错误(未经授权)

2017-10-12T15:11:19.7921253Z##[错误]16:11:19.729请求和分析“”失败:远程服务器返回错误:(401)未经授权

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

奇怪的是,来自其他项目的其他构建使用相同的API令牌,运行得非常好。我甚至在失败的项目中创建了一个新的Sonarqube端点,然后又在一个已知的好项目中创建了一个新的Sonarqube端点——在这两个项目上使用相同的API键——只是为了发生相同的事情。一个因上述错误而失败,另一个则可以

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

我怀疑这个问题源于TFS项目的安全设置,但是在比较了好项目和坏项目之后,我没有想到什么原因可能是什么——它们似乎设置相同。我启用了对好版本和坏版本的调试,并比较了输出。据我所知,两者之间唯一的真正区别是“失败”的构建是从某处获取sonar.password,而好的构建不是:

好:

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


2017-10-12T15:13:07.2785974Z###[调试]参数=/c“Y:\2017_代理(u工作)任务(SonarQubeScannerMsBuildBegin)15b84ca1-b62f-4a2a-a403-89b77a063157\3.0.2\SonarQubeScannerMsBuild.sonaqube.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=MSBuild.SonarQube.ServerPassword;]********


2017-10-12T15:11:19.5733714Z##[调试]路径:Z:\2017_agent#u work#u tasks\SonarQubeScannerMsBuildBegin\u 15b84ca1-b62f-4a2a-a403-89b77a063157\3.0.2\SonarQubeScanerMsbuild\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,这是可行的。这确实证明了根本问题是从“某处”提取这个神秘密码的任务“但我仍然不知道它会在哪里捡到它。我找不到太多关于基于(401)未经授权密码设置MSBuild.SonarQube.ServerPassword的信息。一般来说,您需要在TFS中的SonarQube服务端点中指定身份验证令牌:要在SonarQube中获取用户令牌,请遵循以下步骤。但是,根据您已完成的疑难解答,一个项目有效,另一个项目无效,这与您的问题无关

只需确保SonarQube.Analysis.xml中的
sonar.login
sonar.password
属性被注释掉,否则将不使用令牌

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

基于(401)未经授权。一般来说,您需要在TFS中的SonarQube服务端点中指定身份验证令牌:要在SonarQube中获取用户令牌,请遵循以下步骤。但是,根据您已完成的疑难解答,一个项目有效,另一个项目无效,这与您的问题无关

只需确保SonarQube.Analysis.xml中的
sonar.login
sonar.password
属性被注释掉,否则将不使用令牌

还建议您比较好构建和坏构建的构建定义。另一种方法是为坏项目创建一个新的构建定义,该定义仅与sonar qube相关。为了查看身份验证是否有效,如果问题与构建定义相关,那么这将缩小范围