清洁构建在持续集成中

时间:2008-09-18 13:03:17

标签: svn cruisecontrol.net nant

我们使用CruiseControl.Net/NAnt/Subversion堆栈进行CI。为每个构建执行新的签出过于耗时,因此目前我们只是对工作副本进行更新。但是,这会使孤立文件在源代码管理中删除后仍可能保留在工作副本中。我们尝试使用NAnt删除任务只是为了在更新之前删除所有代码源文件,但这可能会破坏工作副本。有没有人知道在干净和最新的工作副本上运行构建的快速方法? 编辑:我们正在使用SVN 1.3.2

5 个答案:

答案 0 :(得分:5)

如果您只是'更新',SVN将删除源控件中删除的所有文件。但是,在构建过程中创建的文件可能仍然存在,并且可能会干扰新构建。我不确定SVN是否有删除它们的命令,但我想你可以用一个小脚本来做,SVN绝对可以告诉你哪些文件是源代码控制的,哪些不是。

答案 1 :(得分:3)

我们的CC实施遇到了类似的问题。

我们的解决方案......除了基本单元测试之外,我们已经制定了每晚凌晨3点的构建,执行更长时间运行的集成测试。我们只是决定让凌晨3点在新树上构建一个完全干净的构建。因为是半夜,它很少影响任何人。所有其他“正常”签入都会进行增量构建。

答案 2 :(得分:1)

如果您的工作副本中有孤立的文件已经完成了svn更新,那么您的Subversion版本就会出现错误。

答案 3 :(得分:1)

您可以每日完整构建,并按原样保留构建。此外,对于部署版本,始终使用干净的完整版本可能是个好主意。

答案 4 :(得分:1)

我能想到的唯一方法是在构建服务器上有两个副本。首先,您在第一个位置更新。您删除第二个位置。先复制到第二个,然后在第二个位置构建。这样你总是从干净的构建开始。

您可能想看一下为什么结账需要这么长时间。我使用了相同的buildserver堆栈,从来没有遇到过这个问题。 Subversion通常比构建本身花费的时间更少。