我正在Jenkins中设置声纳扫描作业,并且确保在“管理>配置> SCM>用户名+密码”中以声纳提供我的svn凭据。
大多数作业都可以使用svn blame数据正常扫描,但是在scm数据扫描阶段,我仍然遇到一个特定的作业,身份验证错误如下:
19:42:06.883 INFO: SCM provider for this project is: svn
19:42:06.883 INFO: 10938 files to be analyzed
19:42:16.899 INFO: 3/10938 files analyzed
19:42:26.901 INFO: 4/10938 files analyzed
.......
19:46:27.024 INFO: 246/10938 files analyzed
19:46:37.028 INFO: 247/10938 files analyzed
19:46:47.036 INFO: 247/10938 files analyzed
19:46:57.044 INFO: 247/10938 files analyzed
19:47:07.044 INFO: 247/10938 files analyzed
19:47:17.044 INFO: 247/10938 files analyzed
19:47:27.044 INFO: 247/10938 files analyzed
19:47:37.044 INFO: 247/10938 files analyzed
19:47:40.763 INFO: 248/10938 files analyzed
19:47:40.888 INFO: ------------------------------------------------------------------------
19:47:40.888 INFO: EXECUTION FAILURE
19:47:40.888 INFO: ------------------------------------------------------------------------
19:47:40.888 INFO: Total time: 2:02:46.450s
19:47:41.075 INFO: Final Memory: 36M/3064M
19:47:41.075 INFO: ------------------------------------------------------------------------
19:47:41.075 ERROR: Error during SonarQube Scanner execution
19:47:41.075 ERROR: Error when executing blame for file foo/bar.java
19:47:41.075 ERROR: Caused by: svn: E170001: Authentication required for '<http://svn-app:1234> john'
19:47:41.075 ERROR:
19:47:41.075 ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
WARN: Unable to locate 'report-task.txt' in the workspace. Did the SonarScanner succedeed?
ERROR: SonarQube scanner exited with non-zero code: 1
Finished: FAILURE
奇怪的是,我已经多次运行了此扫描,并且此错误总是在它正在分析的第240-250个文件周围弹出,即不总是相同的文件。奇怪的是,身份验证最初只是通过第240-250个文件,然后弹出此错误。
各种解决方案建议禁用我的要求禁止的scm传感器(sonar.scm.disabled = true)。我需要scm责备数据。
我尝试了以下操作:
答案 0 :(得分:0)
原来是由于SVN的KeepAliveTimeout
参数设置得太低。当它正在分析特定的大文件时,它将达到此超时时间(例如,按照我的代码示例,在第207个文件上超过1分钟),从而导致SVN挑战声纳以获取凭据。
现在,其他svn客户端将在%HOMEPATH%/AppData/Roaming/Subversion/auth/svn.simple/
下创建凭据缓存,并在遇到这种情况时检索该缓存。但是Sonarqube的svn插件(svnkit)不存储凭据缓存,即使存在缓存,它也不知道如何读取(使用加密和纯文本缓存进行尝试)。
在httpd.conf中编辑svn的KeepAliveTimeout
参数可以从理论上权衡svn服务器的性能来解决此问题-因为svn在确认客户端空闲之前将需要等待更长的时间才能关闭连接以回收资源,因此增大KeepAliveTimeout
参数将导致svn在任何给定时间保留更多请求。
参考文献:
SVN身份验证网络模型:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.creds
类似的问题:https://groups.google.com/forum/#!topic/sonarqube/-Vz2zoOBS1Y
SVNkit身份验证机制:https://wiki.svnkit.com/Authentication: https://github.com/jenkinsci/svnkit
Sonarqube SVNkit插件存储库:https://github.com/SonarSource/sonar-scm-svn
Jenkins SVNkit插件存储库:https://github.com/jenkinsci/svnkit