CruiseControl.NET零星的SVN 500错误

ash*_*999 7 svn cruisecontrol.net exception

我在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
Run Code Online (Sandbox Code Playgroud)

编辑:有时这似乎是因为本地文件夹中存在SVN冲突.但这并不一致.


赏金:我为此提供了一个通用解决方案的奖励:如何配置CC.NET以优雅地应对SVN错误,即不处理由定期更新检查(与计划的每日构建相反)触发的SVN失败构建故障,但优雅地退回,直到它被修复或直到连接恢复.

我自己没有设法解决这个问题,虽然我不是CC.NET专家,并且没有找很长时间.是否有支持或是否需要编码?谢谢!

澄清,

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

ale*_*rul 1

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