关于Visual Studio:预构建任务-在CruiseControl.NET中删除工作副本

关于Visual Studio:预构建任务-在CruiseControl.NET中删除工作副本

Pre-build task - deleting the working copy in CruiseControl.NET

我目前正在建立一个持续集成环境。 我们正在使用VisualSVN Server和CrusieControl.NET。 有时,构建会失败,并且症状是CruiseControl.NET工作副本中存在冲突。 我相信这是由于我设置Visual Studio解决方案的方式。 希望我们在这种环境下运行的项目越多,我们对如何设置它们的理解就会越好,这样我就不会怀疑为什么在此阶段会发生冲突。 要修复该版本,我删除了工作副本并强制执行一个新版本-每次都有效(当前)。 所以我的问题是:删除工作副本是否是持续集成构建过程的有效部分,我该如何处理?

我尝试了包括MSTask和从命令行调用delete的解决方案,但是我没有任何运气。

很抱歉这么罗--做得好,这是一个测试版:)


在构建之前或之后进行完整删除是一个好习惯。这意味着您的构建环境没有机会获取过时的文件。您的建筑物与存储库中的内容完全一致。

可以删除工作副本,因为我已经与Nant一起完成了工作。

在Nant中,我要在其自己的文件夹中有一个干净的脚本,而不要删除该脚本,然后从CC.net调用它。

我认为使用批处理文件也应该可行。看看rmdir命令http://www.computerhope.com/rmdirhlp.htm

@pauldoo

我更喜欢CI服务器执行完全删除,因为当我进行发布构建时,我不希望有任何意外,应该始终从干净状态进行发布。但是它应该能够处理这两种情况,没有理由


如果您检出CC.NET的jira,则签入了一个补丁,以实现CleanCopy for Subversion的功能,该补丁可以实现您想要的功能,只需在源代码控制块内将CleanCopy设置为true即可,就像TFS一样。


@jamie:使用持续集成服务器时,每次可能无法执行干净构建的原因有一个-构建时间。在我从事的某些项目中,干净的构建需要80分钟以上的时间(一个嵌入式项目,其中包含数千个C ++文件,以进行检出,然后针对多个目标进行编译)。在这种情况下,您必须权衡快速反馈的好处与干净的构建将捕获增量构建无法捕获的内容的可能性。在我们的案例中,我们致力于改进和并行化构建过程,同时允许在CI机器上进??行增量构建。我们确实有一些问题,因为我们没有进行干净的构建,但是通过每晚或每周进行一次干净的构建,您可以消除风险,而不会丢失CI机器的快速反馈。


@布拉德·巴克

清洁意味着只清除构建产品。

删除工作副本也会删除所有其他内容(源文件和项目文件等)。

通常,如果您要构建的机器可以在不执行完全删除的情况下运行就很好了,因为这可以复制普通开发人员的操作。在更新过程中发现的任何冲突都是对您的开发人员所期望的预警。

@杰米

是的,对于正式版本,最好进行完全干净的签出。所以我想这取决于构建的目的。


在进行任何重大构建之前,任何构建过程都要进行"清理"是很常见的,而且通常是一种好的做法。这样可以防止以前的构建中的任何"伪像"污染输出。

清除实际上就是通过删除工作副本来执行的操作。


推荐阅读