ASP.NET应用程序 - 提取,测试,编译和部署

时间:2009-03-13 18:34:26

标签: .net svn deployment tfs continuous-integration

假设:我对持续集成领域很陌生。

我应该使用什么方法来提取,测试,编译,部署ASP.NET(.NET 3.5)应用程序。

第1步) 有时我想从TFS中获取最新的源代码,有时甚至是Subversion。

第2步) 运行所有测试。 (我目前正在使用MbUnit)

第3步) 如果所有测试都通过构建发布版本。

第4步) 通过FTP部署代码 - 替换特定URL的当前应用程序

我正在寻找易于学习的解决方案。设置,低成本或免费/开源。

对于第3步,MSBuild是最容易做的事。因为我真的不想做任何特别的事情......只需提供解决方案名称并进行编译即可。我主要关心的是找到一些东西摘要由于需求/步骤#1引起的任何重大问题。

1 个答案:

答案 0 :(得分:1)

我们使用CruiseControl.net,但您的第一个要求可能是一个问题。您能解释一下如何选择从哪个存储库中获取源代码。 CC.NET可以与其中任何一个一起使用,或者如果你对ccnet.config设置有点聪明的话,可以同时使用它们,但更多的是你知道从哪个设置中提取。

其余部分很简单,我使用NAnt来完成真正的工作,并且很容易实现。

编辑:

NAnt一段时间没有更新,当MSBuild发布时,开发停止了。如果你在stackoverflow上搜索,你会发现很多“我应该交换到MSBuild”类型的问题,我个人在NAnt中有一个合理的知识,它做我们想要的,并且我们做的一些东西出现了在MSBuild中非常努力,所以我们会坚持一段时间。

CruiseControl.NET具有可以直接调用MSBuild的任务,我们仍然直接调用DevEnv,因为我们构建了很多部署项目,这是MSBuild无法做到的。

我们的NAnt脚本将我们从ClearCase的正确来源一直带到准备好运输的打包产品。

但是,NAnt只是一个选项,如果您对其他脚本语言(如PowerShell)感到满意,那么就没有理由不应该使用它。 CruiseControl.NET可以使用标记将任何可执行文件作为任务调用,并通过使用环境变量传递大量信息。此页面:http://confluence.public.thoughtworks.org/display/CCNET/Executable+Task详细说明了传递的内容。

在使用相同的步骤方面,两个设置之间的唯一区别是ccnet.config文件中的源控制块,当我们更改正在使用的视图时,我们的NAnt脚本根本不会改变,因为一切都是相对的我们希望为我们的观点设置标准布局,这意味着我们知道所有时间都在哪里。

希望有所帮助。

艾伦。