【发布时间】:2010-12-07 14:41:32
【问题描述】:
我正在 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 冲突。但这并不一致。
赏金:我添加了一个赏金来解决这个问题:如何将 CC.NET 配置为优雅地处理 SVN 错误,即不处理由定期更新触发的 SVN 故障检查(而不是计划的每日构建)作为构建失败,而是优雅地退出,直到它被修复或直到连接恢复。
虽然我不是 CC.NET 专家并且很久没有研究过,但我自己还没有弄清楚这一点。是否有对此的支持或者是否需要编码?谢谢!
为了澄清,
- 我们需要设置一个 CC.NET 服务器来检查新的提交和检查 + 构建 + 测试所有更改,然后报告结果。
- 但是,如果 SVN 服务器出现故障或我们失去与它的连接,则它会将此视为最后一次提交破坏了构建:它将构建状态设置为红色并通过电子邮件发送给最后一个提交者,就好像这是他们的错.
- 是的,这对于每天一次的构建作业来说是个问题,但对于持续的每次提交集成,我认为这不是有用的行为。
【问题讨论】:
-
不管是什么原因,我也对配置 CC.NET 以忽略 SVN 异常而不是使构建失败的方法感兴趣。
-
您的 CI 设置不应该产生任何干净的结帐会产生的结果吗?如果是这样,那么如果发生异常,您的整个构建环境将无效。
-
@Mark 我对构建输出不太感兴趣,但对报告和失败通知更感兴趣。我们已经设置 CC.NET 为每个新提交运行:获取新的签出、构建、测试、报告失败。但是,如果我们的 SVN 服务器出现故障,或者我们失去连接,那么 CC.NET 会将其标记为构建失败,将项目交通灯更改为红色,并通过电子邮件向最后一个提交者发送构建失败错误。然而,这不是他的错。是的,我意识到这是一个严重的错误,如果我们使用 CI 构建一天一次的版本进行测试,但对于持续的每次提交测试它是没有用的。
-
我很确定没有办法开箱即用地配置 CC.NET 来忽略这些 SVN 事件,但是“幸运的是”,对于“幸运”的某些定义,CC.NET 代码是开源且不太难的 C# 代码。可能会破解 SVN 提供商的选项。
标签: svn exception cruisecontrol.net