当我从 Jenkins shell 运行 svn 命令行时,出现以下错误:
D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive
Updating '.':
svn: E175002: Unable to connect to a repository at URL 'https://xxx/stable'
svn: E175002: OPTIONS of 'https://xxx/stable': Server certificate verification failed: certificate issued for a different hostname, issuer is not trusted (https://xxx)
但是当我从命令行 CMD 窗口运行相同的命令时,就可以了:
D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up
Updating '.':
At revision 1797.
or
D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive
Updating '.':
At revision 1797.
知道如何解决这个问题吗?
很老的问题,但仍然很活跃。
如您所知,问题在于接受的证书缓存(以及用户名/密码缓存)是针对每个用户的,并且由于 Jenkins 以不同的用户(最有可能是 SYSTEM)运行,因此它不知道您的常规用户缓存。
并非所有 SVN 客户端都允许您在那里执行“echo p”操作(它对我不起作用),并且--trust-server-cert
显然在这种情况下也不起作用。
对我有用的是以 SYSTEM 身份打开控制台窗口 https://blogs.technet.com/b/askds/archive/2008/10/22/getting-a-cmd-prompt-as-system-in-windows-vista-and-windows-server-2008.aspx,并在那里进行交互式接受证书-登录-密码舞蹈。
由于所有这些都被缓存,您只需执行一次,从那时起,所有svn up
并且类似的请求将会起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)