关于svn:Clean建立在持续集成中

关于svn:Clean建立在持续集成中

Clean builds in continuous integration

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


如果仅执行"更新",SVN将删除源代码管理中已删除的所有文件。但是,在构建过程中创建的文件可能仍然存在,并且可能会干扰新的构建。我不确定SVN是否有删除它们的命令,但是我想您可以用一个小脚本来做到这一点,SVN肯定可以告诉您哪些文件在源代码控制之下,哪些不在源代码控制之下。


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

我们的解决方案...我们已经精心设计了每晚3:00 AM的版本,除了基??本单元测试外,该版本还执行了运行时间更长的集成测试。我们只是决定让3:00 AM在一棵新鲜的树上建造一个完全干净的建筑。由于是深夜,它很少影响任何人。所有其他"正常"签入都运行增量构建。


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

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


您可以每天进行一次完整构建,然后将构建保持在签入状态。另外,对于部署版本,始终使用干净完整的版本可能是一个好主意。


如果您的工作副本中还有孤立的文件进行了svn更新,则您的Subversion版本中存在错误。


推荐阅读