执行文件责备时出现SonarQube错误

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

我最近从SonarQube 5.1.2升级到SonarQube 5.6。现在我收到IllegalStateException“执行文件责备时出错”。这种情况在Eclipse和Jenkins中使用我的ant脚本构建。在Jenkins中,错误更加完整,表明SVNAuthenticationException E170001:协商身份验证失败:'没有提供有效凭据'。

SonarQube管理 - >常规设置 - > SCM - > SVN中存在有效凭据。它们与我在5.1.2中使用的凭据相同,并且责备功能无错误地工作,并为各种开发人员分配了问题。此外,我的构建脚本使用相同的凭据填充sonar.svn.username和sonar.svn.password.secured。

在5.1.2中我使用了sonar-issue-assign-plugin。我看到现在已经弃用了,实际上如果该插件存在,SonarQube 5.6将无法成功启动。不幸的是,取而代之的是不适合我。

我看了同样的错误herehere问题的答案。

编辑:我仍然坚持这一个。我在SonarQube管理>生成设置> SCM> SVN中重新输入凭据,然后重新启动服务器。结果相同。这是异常堆栈跟踪的最后一部分:

引起:org.tmatesoft.svn.core.SVNAuthenticationException:svn:E170001:协商身份验证失败:org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:62)中没有提供“有效凭据” at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)at org.tmatesoft.svn.core.internal.io.dav.http.DefaultHTTPNegotiateAuthentication $ 1.run(DefaultHTTPNegotiateAuthentication.java:175 )org.tmatesoft.svn.core.internal.io.dav.http.DefaultHTTPNegotiateAuthentication $ 1.run(DefaultHTTPNegotiateAuthentication.java:166)at org.tmatesoft.svn.core.internal.io.dav.http.DefaultHTTPNegotiateAuthentication.authenticate( DefaultHTTPNegotiateAuthentication.java:221)org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:477)at org.tmatesoft.svn.core.internal.io.dav.http。位于org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request的HTTPConnection.request(HTTPConnection.java:398)(HTTPConnection.java:386 )org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:863)at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:699) )org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049) )org.tmatesoft.svn.core.internal.io.dav.DAVRepository.hasCapability(DAVRepository.java:877)at org.tmatesoft.svn.core.io.SVNRepository.assertServerIsMergeInfoCapable(SVNRepository.java:787)at org。 tmatesoft.svn.core.io.SVNRepository.getFileRevisions(SVNRepository.java:756)位于org.tmatesoft.svn的org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.java:111)。 core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.java:35)org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)at org.tmatesoft.svn.core。 wc2.SvnOperationFactory.run(SvnOpe rationFactory.java:1235)org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)org.tmatesoft.svn.core.wc.SVNLogClient.doAnnotate(SVNLogClient.java:295)at org .sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:100)... 64更多

编辑2:我使用sonarqube-ant-task-2.5.jar将其作为Ant任务运行,我使用SonarQube插件(版本2.4.4)在Jenkins中将其作为单独的构建步骤运行,结果相同。我仍然不知道为什么在尝试分配责任时它没有找到我的SVN凭证。

svn ant sonarqube sonarqube-scan
1个回答
8
投票

我将回答我自己的问题,因为我找到了一个有效的解决方案。 SVNKit似乎是一个问题,我的SVN服务器使用的是NTLM或Negotiate身份验证,而SonarQube插件调用的tmatesoft svn代码在我的环境中不支持。

将以下内容添加到Jenkins主机JVM选项可解决此问题:

-Dsvnkit.http.methods=Basic,Digest,Negotiate,NTLM

Solution found here.

这适用于通过在调用ant脚本时将其添加到JVM选项来从Ant调用Sonar,并且在添加到JVM选项时它也适用于Jenkins构建任务Execute SonarQube Scanner。

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