我在CruiseControl.NET中运行了几个项目。他们中的许多人没有构建错误并且成功构建。他们都试图在构建之前提取最新的代码。
我注意到他们经常无法建造; CruiseControl报告“例外”。 SVN 500错误(内部服务器错误)是个例外。它随机但持续地打击(例如,在一个项目中,每个交替构建都失败)。
我已经尝试使用相同的凭据检查其中一些零星失败的项目,并且它可以正常工作。我知道项目的构建,因为并非每个构建都失败。
问题是什么?
对于它的价值,这里是示例性例外的顶线(没有SVN项目URL或凭证):
ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'https://some/url/trunk'
. Process command: C:\Program Files\CollabNet Subversion Client\svn.exe log https://some/url/trunk -r "{2010-12-04T09:09:19Z}:{2010-12-07T09:08:48Z}" --verbose --xml --username ******** --password ******** --non-interactive --no-auth-cache
编辑:有时这似乎是因为本地文件夹中存在SVN冲突。但这并不一致。
Bounty :我为此提供了一个通用解决方案的赏金:如何配置CC.NET以优雅地应对SVN错误,即不处理定期更新触发的SVN失败检查(与计划的每日构建相对)作为构建失败,但优雅地退回,直到它被修复或直到连接恢复。
我自己没有设法解决这个问题,虽然我不是CC.NET专家,并且没有找很长时间。是否有支持或是否需要编码?谢谢!
澄清,
答案 0 :(得分:1)
解决此问题的一个难点方法是使用批处理文件或自定义包装器(而不是CruiseControl.NET的源代码控制工具)检查是否需要调用svn客户端并创建文件(或其他方式)如果需要构建,则发出信号变化)批处理或包装可以根据需要处理异常。当然,这个解决方案可能需要改变构建过程的其余部分。