Sonarqube-> SVN认证虽然提供,但仍需要错误

问题描述 投票:0回答:1

我正在Jenkins中设置sonarqube扫描作业,我确保在'管理>配置> SCM>用户名+密码中提供我的svn凭证在sonarqube。

使用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 blame数据。

我试过以下的事情:

  • 重新启动Jenkins服务器
  • 重启Sonarqube服务器
  • 重启SVN服务器
  • 在jenkins作业配置> sonarqube分析属性中,设置sonar.scm.username和sonar.scm.password
  • 删除作业以及工作区并重新创建新作业。
jenkins svn sonarqube sonarqube-scan visualsvn-server
1个回答
0
投票

事实证明这是由于SVN的KeepAliveTimeout参数设置得太低。当它分析特定的大文件时,它会达到此超时(例如,根据我的代码示例,在第207个文件上超过1分钟),导致SVN重新挑战sonarqube以获取凭据。

现在,其他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/Authenticationhttps://github.com/jenkinsci/svnkit

Sonarqube SVNkit插件回购:https://github.com/SonarSource/sonar-scm-svn

Jenkins SVNkit插件回购:https://github.com/jenkinsci/svnkit

© www.soinside.com 2019 - 2024. All rights reserved.