Jenkins Subversion Error - E200015: No credential

2019-03-11 01:30发布

问题:

I've updated the Subversion plugin of jenkins to version 2.2

Now i get following error for repos which build the first time after the upgrade and for repos where something within an external changed. It works for all other builds as expected.

I tried to add additional credentials but this did not help.

Now i hope someone has an idea what else can be tried to fix this annyoing issue.

The error:

hudson.util.IOException2: revision check failed on http://XXX/svn/XXX/Website/Config/trunk
    at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:189)
    at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:132)
    at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:738)
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:899)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1411)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:671)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:580)
    at hudson.model.Run.execute(Run.java:1670)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:231)
Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: OPTIONS /svn/XXX/Website/Config/trunk failed
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:384)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1020)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.getRevisionNumber(SvnNgRepositoryAccess.java:118)
    at org.tmatesoft.svn.core.internal.wc2.SvnRepositoryAccess.getLocations(SvnRepositoryAccess.java:148)
    at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRepositoryAccess.createRepositoryFor(SvnNgRepositoryAccess.java:45)
    at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:160)
    at org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteLog.run(SvnRemoteLog.java:35)
    at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
    at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1238)
    at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
    at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:967)
    at org.tmatesoft.svn.core.wc.SVNLogClient.doLog(SVNLogClient.java:872)
    at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:177)
    ... 11 more
Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: No credential to try. Authentication failed
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
    at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:185)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:694)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
    ... 29 more

回答1:

Ok after many comments on the official bug report we were able to solve this issue.

So to get it working you have to update to the newest 2.3-snaptshot of the subversion plugin, which can be found here:

https://jenkins.ci.cloudbees.com/job/plugins/job/subversion-plugin/

(Download the .hpi file and install it on your jenkins)

  1. After that you have to fix your build. I've written a small tutorial on how you can do this here.
  2. open the build configuration
  3. scroll down to the source-code-management section
  4. click on the "Add additional credentials..." button
  5. define as realm the specific identifier for our svn server --> (<prot://ip:port > Company Subversion Repository)
    • if it should work for a different svn you need to use the realm of this server
    • checkout a repo on this server via the command-line --> svn --username {username} --password {password} checkout prot://ip:port/svn/repo <-- you can cancel this after it has started the checkout
    • read all realms available on your mac with this cmd --> find ~/.subversion/auth/svn.simple/ -type f -exec cat {} + | grep -A 2 realmstring
      • there's also another option to get the realmstring. on a pc which was not connected to the svn before, do the following in the therminal: "svn info prot://ip:port/pathtorepo" --> this will output something like "Authentication realm: Company Subversion Repository"
  6. select the credentials --> buildmaster/****** (<prot://ip:port> Company Subversion Repository)

NOTE : If you are using svn+ssh, your realm would look like "svn+ssh://server-name" without double-quotes. No pointy brackets, port or realm name needed.

  1. save and be happy!


回答2:

I had same error. Since the svn repo was password protected. when I add the credential and use it for svn check out, it works fine.



回答3:

I was getting the exactly same exception and it was because of using build parameter in repository path, e.g.:

http://reposerver/svn/project/${SVN_BRANCH}

even in case ${SVN_BRANCH} was correctly set to 'trunk' It was not working

when I changed repository path to:

http://reposerver/svn/project/trunk

everything works fine now

This issue occurred after upgrading svn plugin from 1.54 to 2.2, so it looks like there is some bug in new version of svn jenkins plugin



回答4:

I'd like to emphasize a point in mikepenz' answer: In the text field Realm of your job configuration (after clicking Add additional credentials...) you don't enter merely your SVN realm but your realm and the complete URL of your external repo. This tripped me up.

So this part of your job config ends up looking like this:

Edit:

As it turns out, the above did not improve the situation: The credential error still occurred and moreover commits to external repos did not trigger Jenkins to build the software.

I followed the recommendation here (that also mentions security concerns with the approach described above) and used modules in Jenkins for my external repositories.

This is how my module configuration looks for an external repo:



回答5:

When you update subversion plugin, you should do one of the below.

  • Clean of the up jenkins Workspace because metainfo is related to old version of subversion

or

  • Update Work-space manually, it prompts you to update version of client click yes