首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于服务器证书不匹配,jenkins中的SVN命令行失败

由于服务器证书不匹配,jenkins中的SVN命令行失败
EN

Stack Overflow用户
提问于 2012-08-14 19:43:23
回答 8查看 18.6K关注 0票数 14

当我从Jenkins shell运行svn命令行时,我得到这个错误:

代码语言:javascript
复制
 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窗口运行同样的命令时,它是正常的:

代码语言:javascript
复制
 D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up
 Updating '.':
 At revision 1797.

代码语言:javascript
复制
 D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive
 Updating '.':
 At revision 1797.

你知道怎么解决这个问题吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-11-20 16:19:03

这是一个很老的问题,但仍然很有活力。

正如您所知道的,问题是接受的证书缓存(以及用户名/密码缓存)是按用户的,而且由于Jenkins是以不同的用户(很可能是系统用户)的身份运行的,所以它不知道您的常规用户缓存。

并不是所有的SVN客户端都允许您在那里做"echo p“的事情(它对我不起作用),而且--trust-server-cert显然在这种情况下也不起作用。

对我来说起作用的是open a console window as SYSTEM,并在其中进行交互式的接受证书-登录-密码舞蹈。

因为所有这些都被缓存了,你只需要做一次,从那时起,所有的svn up和类似的请求都会工作。

票数 18
EN

Stack Overflow用户

发布于 2012-08-14 22:55:36

我终于设法解决了这个问题!我所做的只是简单地放在Jenkins脚本中:

代码语言:javascript
复制
echo p | svn up --username <usr> --password <pwrd>

这解决了这个问题!因为回声模拟了手动输入以永久接受证书。

根本原因是Jenkins shell脚本在windows服务用户下运行,因此使用了不同的位置来缓存用户配置文件(在C:\Windows\System32\config\systemprofile\AppData\Roaming\Subversion中而不是%USERPROFILE%\AppData\Roaming\Subversion\中)。

票数 7
EN

Stack Overflow用户

发布于 2014-09-05 00:45:12

echo p | svn commands

在Jenkins windows批处理命令提示符中工作得很好。执行此操作一次将永久接受构建框中Jenkins用户的证书。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11951546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档