web-dev-qa-db-ja.com

ファイルの注釈を実行する際のSonarQubeエラー

最近、SonarQube 5.1.2からSonarQube 5.6にアップグレードしました。現在、IllegalStateException「ファイルの注釈を実行するときにエラーが発生しています」が発生しています。これは、EclipseとJenkinsの両方でantスクリプトを使用してビルドするときに発生します。 Jenkinsでは、エラーがより完全になり、SVNAuthenticationException E170001:ネゴシエート認証が失敗しました:「有効な資格情報が提供されていません」を示します。

有効な認証情報は、SonarQube Administration-> General Settings-> SCM-> SVNにあります。これらは5.1.2で使用していたものと同じ資格情報であり、非難機能はエラーなしで機能し、さまざまな開発者に問題を割り当てました。また、私のビルドスクリプトでは、同じ資格情報を使用してsonar.svn.usernameとsonar.svn.password.securedを設定しています。

5.1.2では、sonar-issue-assign-pluginを使用していました。それは現在非推奨であり、実際にそのプラグインが存在する場合、SonarQube 5.6は正常に起動しません。残念ながら、その代わりに何も機能しません。

同じエラー here および here の質問に対する回答を確認しました。

編集:私はまだこれにこだわっています。 SonarQubeの管理>設定の生成> SCM> SVNで認証情報を再入力し、サーバーを再起動しました。同じ結果。例外スタックトレースの最後の部分は次のとおりです。

原因:org.tmatesoft.svn.core.SVNAuthenticationException:svn:E170001:Negotiate authentication failed: 'No valid credentials provided at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error (SVNErrorManager.Java:62)org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.Java:51)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)(org.tmatesoft.svn.core.internal) org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.Jの.io.dav.http.HTTPConnection.request(HTTPConnection.Java:398) ava: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) org.tmatesoft.orgのmate.tmatesoft.svn.core.io.SVNRepository.getFileRevisions(SVNRepository.Java:756)のorg.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.Java:111)のorg.tmatesoft.svnのorg.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.Java:21)の.svn.core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.Java:35) .core.wc2.SvnOperationFactory.run (SvnOperationFactory.Java:1235)at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.Java:294)at 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資格情報が見つからないのかについて、私は依然として困惑しています。

9
PatrickE

機能する解決策を見つけたので、自分の質問に答えます。それは私のSVNサーバーがNTLMまたはネゴシエート認証を使用していて、SonarQubeプラグインによって呼び出されたtmatesoft svnコードが私の環境でサポートしていないSVNKitの問題のようです。

Jenkins Host JVMオプションに以下を追加すると、問題が解決します。

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

ここに解決策が見つかりました。

これは、antスクリプトを呼び出すときにJVMオプションに追加することでAntからSonarを呼び出す場合に機能します。また、JVMオプションに追加された場合、JenkinsビルドタスクExecute SonarQube Scannerでも機能します。

10
PatrickE