web-dev-qa-db-fra.com

Erreur d'authentification avec SVN dans Jenkins

J'ai commencé un projet où je dois utiliser un svn externe (je suis sous un proxy). Lorsque je mets l'URL dans le projet de configuration, Jenkins ne peut pas accéder au référentiel. J'ai donc rempli les informations d'identification (URL du référentiel, nom d'utilisateur et mot de passe), mais voici l'erreur:

FAILED: svn: E175002: OPTIONS /.../trunk/www failed

org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS /.../trunk/www failed
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.Java:304)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.Java:289)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.Java:277)
        at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.Java:696)
        at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.Java:619)
        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.testConnection(DAVRepository.Java:99)
        at hudson.scm.SubversionSCM$DescriptorImpl.postCredential(SubversionSCM.Java:1968)
        at hudson.scm.SubversionSCM$DescriptorImpl.doPostCredential(SubversionSCM.Java:1913)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at Java.lang.reflect.Method.invoke(Unknown Source)
        at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.Java:288)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.Java:151)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.Java:90)
        at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.Java:111)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.Java:53)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.Java:574)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.Java:659)
        at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.Java:241)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.Java:53)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.Java:574)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.Java:659)
        at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.Java:241)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.Java:53)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.Java:574)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.Java:659)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.Java:488)
        at org.kohsuke.stapler.Stapler.service(Stapler.Java:162)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:45)
        at winstone.ServletConfiguration.execute(ServletConfiguration.Java:248)
        at winstone.RequestDispatcher.forward(RequestDispatcher.Java:333)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.Java:376)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.Java:95)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.Java:87)
        at winstone.FilterConfiguration.execute(FilterConfiguration.Java:194)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.Java:366)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.Java:47)
        at winstone.FilterConfiguration.execute(FilterConfiguration.Java:194)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.Java:366)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:84)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.Java:51)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.Java:166)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.Java:125)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.Java:142)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.Java:271)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.Java:173)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.Java:63)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.Java:249)
        at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.Java:66)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.Java:87)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.Java:76)
        at hudson.security.HudsonFilter.doFilter(HudsonFilter.Java:164)
        at winstone.FilterConfiguration.execute(FilterConfiguration.Java:194)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.Java:366)
        at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.Java:50)
        at winstone.FilterConfiguration.execute(FilterConfiguration.Java:194)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.Java:366)
        at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.Java:81)
        at winstone.FilterConfiguration.execute(FilterConfiguration.Java:194)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.Java:366)
        at winstone.RequestDispatcher.forward(RequestDispatcher.Java:331)
        at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.Java:215)
        at winstone.RequestHandlerThread.run(RequestHandlerThread.Java:138)
        at Java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at Java.util.concurrent.FutureTask.run(Unknown Source)
        at winstone.BoundedExecutorService$1.run(BoundedExecutorService.Java:77)
        at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at Java.lang.Thread.run(Unknown Source)
Caused by: svn: E175002: OPTIONS /.../trunk/www 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)
        ... 80 more
Caused by: org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS request failed on '/.../trunk/www'
svn: E175002: connection refused by the server
        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:681)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.Java:298)
        ... 79 more
Caused by: svn: E175002: OPTIONS request failed on '/.../trunk/www'
        at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.Java:208)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.Java:679)
        ... 80 more
Caused by: svn: E175002: connection refused by the server
        at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.Java:208)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.Java:424)
        ... 80 more
Caused by: Java.net.ConnectException: Connection timed out: connect
        at Java.net.PlainSocketImpl.socketConnect(Native Method)
        at Java.net.PlainSocketImpl.doConnect(Unknown Source)
        at Java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at Java.net.PlainSocketImpl.connect(Unknown Source)
        at Java.net.SocksSocketImpl.connect(Unknown Source)
        at Java.net.Socket.connect(Unknown Source)
        at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
        at org.tmatesoft.svn.core.internal.util.SVNSocketFactory.connect(SVNSocketFactory.Java:112)
        at org.tmatesoft.svn.core.internal.util.SVNSocketFactory.createSSLSocket(SVNSocketFactory.Java:85)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.Java:195)
        at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.Java:360)
        ... 80 more

Dans C:\Windows\System32\config\systemprofile\AppData\Roaming\Subversion\server, le proxy est configuré et dans Jenkins, je peux installer/mettre à jour des plugins.

L'URL svn est dans https et je peux y accéder avec les informations d'identification dans un navigateur.

Par défaut, la version de svn utilisée dans Jenkins est 1.4, même avec la version 1.7, il est impossible d’accéder à ce serveur svn.

Le serveur est un Windows 7 64 bits et ceci est la dernière version de Jenkins.

Où est le problème ?

Je vous remercie 

15
skurty

Supprimez votre ${user.home}/.Subversion.

2
user2408678

Vraiment tard dans le match ici, mais j'ai juste eu le même problème. Si vous exécutez manuellement SVN sur une machine Jenkins, un fichier d'authentification svn sera créé pour votre serveur svn (mise en cache de l'authentification). L'existence de ce fichier casse Jenkins svn.

Sur mon serveur (Windows), le fichier se trouve dans:

%APPDATA%\Subversion\auth\svn.simple

Je crois que sur Linux, ce serait dans ~/.Subversion

J'ai renommé le répertoire svn.simple en svn.simple1 et les choses ont immédiatement commencé à fonctionner (et se sont cassées à nouveau lorsque je l'ai changé).

Pour éviter cela lorsque vous exécutez svn bin sur le serveur Jenkins, vous pouvez 

  • mettez à jour votre fichier% APPDATA%\Subversion\config en supprimant la mise en commentaire de "store-passwords = no" 
  • ou utilisez cet indicateur: --no-auth-cache
2
Seth

Vous pouvez exécuter la commande avec cette option:

-Dsvnkit.http.sslProtocols="SSLv3"
1
Kayser

Je vais soumettre une réponse que j'ai soumise sur ServerFault qui a vraiment bien fonctionné pour moi. La solution a été d’éditer le fichier Jenkins.xml directement à son élément <arguments> pour y inclure

-Dhttp.proxyHost=proxy.myproxy.com Dhttp.proxyPort=99999 -Dhttp.auth.preference=Basic

Apparemment, cela permet aux éléments internes de Java de passer par le serveur proxy.

0
jxramos