【问题标题】:Sonarqube->SVN Authentication required error although supplied尽管提供了 Sonarqube->SVN Authentication required 错误
【发布时间】:2019-05-23 08:20:04
【问题描述】:

我正在 Jenkins 中设置 sonarqube 扫描作业,并且我已确保在 sonarqube 中的“管理>配置>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 责备数据。

我尝试了以下方法:

  • 重启 Jenkins 服务器
  • 重新启动 Sonarqube 服务器
  • 重启SVN服务器
  • 在jenkins作业配置中> sonarqube分析属性,设置sonar.scm.username和sonar.scm.password
  • 删除作业以及工作区并重新创建新作业。

【问题讨论】:

    标签: jenkins svn sonarqube sonarqube-scan visualsvn-server


    【解决方案1】:

    原来是因为 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/Authentication: https://github.com/jenkinsci/svnkit

    Sonarqube SVNkit 插件仓库:https://github.com/SonarSource/sonar-scm-svn

    Jenkins SVNkit 插件仓库:https://github.com/jenkinsci/svnkit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多