在TeamCity中无人值守运行时,svn checkout对密码提出质疑

时间:2010-12-15 02:49:04

标签: svn authentication teamcity

我目前正在配置StatSVN以在TeamCity中运行,并且遇到一些问题,我需要一些想法。首先,StatSVN需要针对已从SVN检出的工作目录运行,它无法针对来自SVN的TeamCity 导出的应用程序副本运行。因此,它需要在构建服务器上执行svn checkout。

我所做的是创建了一个bat文件,它运行StatSVN创建报告所需的三个命令,第一个是结帐:

svn checkout [repository path]

现在,如果我错了,请纠正我,但这应该使用当前身份结帐。当然它可以直接从命令行运行。当它在TeamCity中运行时,构建运行器被配置为在服务accout下运行,该服务在SVN中具有与我相同的权限。事实上,相同的服务帐户用于创建存储库和默认目录结构,所以我毫无疑问它拥有权利。

但是,每次构建运行时,它都会挂起并在停止后显示原因:

[13:38:28]: C:\TeamCity\buildAgent\work\e8d4dc4070ecf602>svn checkout [repository path] 
[13:38:29]: Authentication realm: <[svn server]> Subversion Repositories
[13:38:38]: Password for '[service account]': 
[13:38:38]: Process exited with code 1

它似乎是挂起并等待密码,这显然是在无人看管的情况下无法获得的。有没有人对为什么会这样做有任何想法?

更新 StatSVN所需的下一个命令是“svn log”,它会转储提交历史记录。即使您可以通过将TeamCity VCS签出模式配置为“自动代理”来解决svn checkout问题,从而导致实际签出而不是导出(这当然比手动命令更可取),“svn log”命令仍然存在同样的问题。

3 个答案:

答案 0 :(得分:4)

您至少可以阻止它使用

请求输入
svn checkout --non-interactive

这不能解决它不了解用户的问题,但可能会为您提供有关错误的更多信息

答案 1 :(得分:2)

是否有可能通过将teamcity的结账从“服务器端”(导出)更改为客户端(结账)来解决这个问题?那么你实际上会获得所有的svn文件夹。

然后,您可以将它们从您的构建中排除(nant或msbuild),以便它们永远不会进入您构建的项目文件夹。

我知道这不会直接回答你的问题,但它可以解决你的实际问题。

答案 2 :(得分:1)

可能太晚了,无法帮助OP,但在执行结账时遇到了类似的问题。尽管使用svn--username开关提供了用户名和密码,--password会不断提示输入用户名和密码。添加--non-interactive开关后(根据Sander Rijken的建议)svn回复说密码不正确。实际上,密码正确但包含未正确转义的字符。