执行文件

时间:2017-01-25 17:04:43

标签: svn ant sonarqube sonarqube-scan

我最近从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 Administration>中重新输入了凭据。生成设置> SCM> SVN并重启服务器。结果相同。这是异常堆栈跟踪的最后一部分:

引起:org.tmatesoft.svn.core.SVNAuthenticationException:svn:E170001:协商身份验证失败:'未提供有效凭据'         在org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:62)         在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)         at 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.HTTPConnection.request(HTTPConnection.java:398)         在org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:386)         在org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:863)         在org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:699)         在org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)         at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049)         at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.hasCapability(DAVRepository.java:877)         at org.tmatesoft.svn.core.io.SVNRepository.assertServerIsMergeInfoCapable(SVNRepository.java:787)         在org.tmatesoft.svn.core.io.SVNRepository.getFileRevisions(SVNRepository.java:756)         在org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.java:111)         在org.tmatesoft.svn.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(SvnOperationFactory.java:1235)         在org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)         at org.tmatesoft.svn.core.wc.SVNLogClient.doAnnotate(SVNLogClient.java:295)         在org.sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:100)         ......还有64个

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

1 个答案:

答案 0 :(得分:7)

我将回答我自己的问题,因为我找到了一个有效的解决方案。 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。