2010-12-15 54 views
3

我目前正在配置StatSVN以在TeamCity中运行,并且遇到了一些问题,我需要一些想法。首先,StatSVN需要在已从SVN签出的工作目录上运行,它不能针对TeamVity 从SVN导出的应用副本运行。因此,它需要在构建服务器上执行svn checkout。svn checkout在TeamCity中无人值守时运行密码的挑战

我所做的是创建了运行由StatSVN创建报表所需的三个命令一个bat文件,其中第一个就是结帐:

svn checkout [repository path] 

现在,纠正我,如果我错了,但是这应该使用当前身份签出。当然,它直接从命令行直接运行。当它在TeamCity中运行时,构建运行器被配置为在与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日志”。即使通过将TeamCity VCS签出模式配置为“自动在代理上”来解决svn checkout问题,从而导致实际签出而不是导出(这当然优于手动命令),但“svn log”命令仍然存在同样的问题。

回答

2

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

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

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

+1

你实际上已经提出了一个很好的观点,这当然比手动的“svn checkout”命令更可取。不幸的是,StatSVN在这之后仍然需要你执行一个“svn log”命令,所以问题才转到下一个语句。 – 2010-12-15 07:41:23

4

你至少可以通过使用

svn checkout --non-interactive 

这不会解决这个问题,它不知道用户的要求输入阻止它,但可能给你不好的事更多信息

1

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