CruiseControl.NET零星的SVN 500错误

时间:2010-12-07 14:41:32

标签: svn exception cruisecontrol.net

我在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专家,并且没有找很长时间。是否有支持或是否需要编码?谢谢!

澄清,

  • 我们有一个CC.NET服务器来设置检查新提交和checkout + build +测试所有更改然后报告结果。
  • 但是,如果SVN服务器出现故障或者我们失去与它的连接,那么它会将此视为最后一次提交破坏了构建:它将构建状态设置为红色并将最后一个提交者通过电子邮件发送,就像它们的错误一样
  • 是的,这对于每天一次的构建工作来说是一个问题,但对于持续的每次提交集成,我认为这不是有用的行为。

1 个答案:

答案 0 :(得分:1)

解决此问题的一个难点方法是使用批处理文件或自定义包装器(而不是CruiseControl.NET的源代码控制工具)检查是否需要调用svn客户端并创建文件(或其他方式)如果需要构建,则发出信号变化)批处理或包装可以根据需要处理异常。当然,这个解决方案可能需要改变构建过程的其余部分。