通过 Python 脚本不受信任的 SVN SSL 证书

SVN SSL Certificate Untrusted via Python Script

我现在有一个奇怪的场景。当我在我们的构建服务器(与 SVN 服务器分开)上发出 svn info TXN REPO 命令时,它按预期工作并向控制台显示相关信息。

然而,当我使用 Python 编写脚本时,特别是子进程模块中的 Popen,它会向标准错误(控制台)打印一条消息 svn: E230001: Server SSL certificate untrusted

我尝试过的:

在脚本调用中使用 --non-interactive--trust-server-cert 标志。

通过脚本在 svn info 调用中传递 username/password。

上面两个好像没有生效,吐出和上面一样的错误。但是,手动 运行 命令提示符下的相同命令成功,没有任何问题。我认为这可能与 python 向 SVN 服务器打开一个新会话有关,而该会话不是 "trusted" 连接?但我不能确定。

我们的 SVN 服务器在 windows 机器上,版本为 1.8.0

我们的构建服务器是 windows 机器 运行 Jenkins 2.84 版。 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 如何运行该命令。 **

有人遇到过这个吗?

以防以后有人看到这个。熊猫睡衣对此给出了详细的解答..

SVN command line in jenkins fails due to server certificate mismatch