Subversion plugin + slave + client certs: works when forced, breaks when polled

375 views
Skip to first unread message

Graham Leggett

unread,
Feb 9, 2013, 5:26:30 PM2/9/13
to jenkin...@googlegroups.com
Hi all,

I am still struggling to get any kind of sensible behaviour out of the Subversion plugin when used with client certificates.

When you set the project up to be built, the configure screen complains as follows:

"Unable to access [URL] : svn: E175002: OPTIONS [PATH] failed (show details)
(Maybe you need to enter credential?)"

Despite the error above, when "build now" is selected, the project builds fine without a problem.

However, when the project is built from a "poll", either driven by a scheduled poll, or triggered by a commit hook, the subversion plugin fails again like so:

Started by an SCM change
Building remotely on [HOST] in workspace /home/jenkins-ci-slave/workspace/workspace/[PATH]
Unable to auto-install JDK until the license is accepted.
Updating [URL] at revision '2013-02-09T21:21:57.798 +0000'
U         pom.xml
At revision 381
hudson.util.IOException2: revision check failed on [URL]
    at hudson.scm.SubversionChangeLogBuilder.buildModule(SubversionChangeLogBuilder.java:178)
    at hudson.scm.SubversionChangeLogBuilder.run(SubversionChangeLogBuilder.java:113)
    at hudson.scm.SubversionSCM.calcChangeLog(SubversionSCM.java:649)
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:810)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1331)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:682)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:587)
    at hudson.model.Run.execute(Run.java:1557)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Caused by: org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS [PATH] failed
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:379)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:364)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:352)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:708)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:628)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:103)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1018)
    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:1235)
    at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:291)
    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:166)
    ... 11 more
Caused by: svn: E175002: OPTIONS [PATH] failed
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:154)
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:97)
    ... 30 more
Caused by: org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS request failed on '[PATH]'
svn: E175002: Remote host closed connection during handshake
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:754)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373)
    ... 29 more
Caused by: svn: E175002: OPTIONS request failed on '[PATH]'
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:752)
    ... 30 more
Caused by: svn: E175002: Remote host closed connection during handshake
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:109)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:488)
    ... 30 more
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:869)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1190)
    at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:657)
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:108)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.sendData(HTTPConnection.java:313)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.dispatch(HTTPRequest.java:168)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:460)
    ... 30 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at sun.security.ssl.InputRecord.read(InputRecord.java:352)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:850)
    ... 38 more
Unable to auto-install JDK until the license is accepted.
Sending e-mails to: [EMAIL]
Finished: FAILURE

It looks like the subversion plugin is broken with respect to providing credentials - on a forced build, the plugin seems to ignore credentials and revert to those in .subversion/servers (the desired behaviour). On polled builds, the plugin successfully does an update but then somehow overrides svnkit and tells it to provide no client certificate at all, and the remote server slams the phone down. Even when a valid P12 file is uploaded using the UI, it makes no difference, the credentials remain ignored, and the connection fails.

Has anybody got the subversion plugin to work with client certificates?

My first prize behaviour is for Jenkins to not fiddle with authentication at all, and simply leave it up to the subversion configuration for the account. This is configured correctly, and the native subversion client works fine.

Is there a way to get the subversion plugin to just use the native svn binary and not fiddle with authentication at all?

Regards,
Graham
--

Graham Leggett

unread,
Feb 9, 2013, 6:05:04 PM2/9/13
to jenkin...@googlegroups.com
On Sunday, 10 February 2013 00:26:30 UTC+2, Graham Leggett wrote:
 
I am still struggling to get any kind of sensible behaviour out of the Subversion plugin when used with client certificates.
Reply all
Reply to author
Forward
0 new messages