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