生成前任务-删除CruiseControl.NET中的工作副本
我目前正在建立一个持续集成环境。我们正在使用VisualSVN Server和CrusieControl.NET。有时,构建会失败,并且症状是CruiseControl.NET工作副本中存在冲突。我相信这是由于我设置Visual Studio解决方案的方式。希望我们在这种环境下运行的项目越多,我们对如何设置它们的理解就会越好,这样我就不会怀疑为什么在此阶段会发生冲突。要修复该版本,我删除了工作副本并强制每次(当前)都有效的新版本。所以我的问题是:删除工作副本是否是持续集成构建过程的有效部分,我该如何处理?
我尝试了包括MSTask和从命令行调用delete的解决方案,但是我没有任何运气。
对不起,这么罗word的好工作,这是一个测试版:)
解决方案
回答
在进行任何重要的构建之前,任何构建过程都要进行"清理"是非常普遍的,而且通常是一种好的做法。这样可以防止以前的构建中的任何"伪像"污染输出。
清除实际上就是通过删除工作副本来执行的操作。
回答
@布拉德·巴克
清洁意味着只清除构建产品。
删除工作副本也会删除其他所有内容(源文件和项目文件等)。
通常,如果我们要构建的机器可以在不执行完全删除的情况下运行就很好了,因为这可以复制普通开发人员的操作。在更新过程中发现的任何冲突都是对开发人员所期望的预警。
@杰米
对于正式发行,是的,最好进行完全干净的签出。所以我想这取决于构建的目的。
回答
在构建之前或者之后进行完整删除是一个好习惯。这意味着构建环境没有机会获取过时的文件。建筑物与存储库中的内容完全一致。
删除工作副本是可能的,因为我已经与Nant一起完成了工作。
在Nant中,我要在其自己的文件夹中有一个干净的脚本,而不要删除该脚本,然后从CC.net调用它。
我认为使用批处理文件也应该可行。看看rmdir命令http://www.computerhope.com/rmdirhlp.htm
@pauldoo
我更喜欢CI服务器执行完全删除,因为当我进行发布构建时,我不希望有任何意外,这应该始终从干净状态开始进行。但是它应该能够处理这两种情况,没有理由不这样做
回答
@jamie:使用连续集成服务器时,每次可能无法进行干净的构建是有原因的-构建时间。在我从事的某些项目中,干净的构建需要80多分钟的时间(一个嵌入式项目,其中包含数千个C ++文件以进行检出,然后针对多个目标进行编译)。在这种情况下,我们必须权衡快速反馈的好处与干净的构建将捕获增量构建无法捕获的内容的可能性。在我们的案例中,我们致力于改进和并行化构建过程,同时允许在CI机器上进行增量构建。我们确实有一些问题,因为我们没有进行干净的构建,但是通过每晚或者每周进行一次干净的构建,我们可以消除风险,而不会丢失CI机器的快速反馈。
回答
如果我们检出CC.NET的jira,则签入了一个补丁,以实现CleanCopy for Subversion的功能,该补丁可以实现我们想要的功能,只需在源代码控制块内将CleanCopy设置为true即可,就像TFS一样。