我现在有一个奇怪的情景。当我在构建服务器上发出svn info TXN REPO
命令(与SVN服务器分开)时,它按预期工作并向控制台显示相关信息。
然而,当我使用Python编写脚本,特别是来自子进程模块的Popen时,它会向标准错误(控制台)输出消息svn: E230001: Server SSL certificate untrusted
。
我尝试过的事情:
在脚本调用中使用--non-interactive
和--trust-server-cert
标志。
通过脚本在svn info
电话中传递用户名/密码。
以上两个似乎没有生效,并且上述相同的错误是吐出来的。但是,从命令提示符手动运行相同的命令会成功,没有任何问题。我假设它可能与python打开一个新的会话到SVN服务器,并且该会话不是一个"信任"连接?但我无法确定。
我们的SVN服务器位于Windows机器上,版本为1.8.0
我们的构建服务器是运行Jenkins版本2.84的Windows机器。 Jenkins执行批处理脚本,启动Python脚本,执行上述任务。
命令:svn_session = Popen("svn info --non-interactive --trust-server-cert --no-auth-cache -r %s %s" % (TXN, REPOS), stdout=PIPE, stderr=PIPE, shell=True)
**编辑**
当我将python行从脚本复制并粘贴到同一服务器上的交互式python shell中时,该命令也按预期工作。所以问题是脚本是如何执行命令的,而不是命令本身或Python如何运行该命令。 **
有没有人遇到过这个?
答案 0 :(得分:1)
如果有人在将来看这个。 Panda Pajama已经给出了详细的答案..
SVN command line in jenkins fails due to server certificate mismatch