9

我正在寻找一些建议来自动执行项目构建和部署。什么是用于asp.net的良好构建自动化和部署过程?

我们当前的开发设置使用ASP.NET,SVN,CCNET和MSBuild脚本开发dev服务器。我正在考虑切换到克鲁斯而不是CCNET,虽然我不确定这是否给了我任何额外的东西,我还没有。

我想自动化的是从自动构建完成到用新更改更新现场的过程。网站更新可以包括基本网站更新以及客户端更新,这些更新可以是代码和/或数据库更改,因此过程需要足够灵活以便能够处理这些情况。

我的灵感来源之一来自this video,以及每个月花费更新的无数时间。

+0

6年后更新; [应用程序发布自动化](https://en.wikipedia.org/wiki/Application_release_automation)工具是专门为此设计的。 BuildMaster是其中的一个工具,并且[本教程](http://inedo.com/support/tutorials/building-and-deploying-a-net-web-application-using-buildmaster)概述了所提及的过程。 – 2016-07-19 14:58:28

回答

4

对于较小或个人项目,我会推荐使用类似免费(和优秀)的JetBrains TeamCity。单元测试自动化,持续集成以及构建后发生的规则(包括将它移动到不同的位置)。

对于更大的团队,我实际上已经发现了一些自定义构建自动化的MSBuild任务的形式和RoboCopy的效果最好。这种在环境之间手动升级构建以及使用MSBuild RoboCopy自动执行此过程的某些部分的良好组合可以在环境之间创建干净的中断(很少有'oops我并不是想要推动那里出现错误)。它还让我们在推广前进行质量检查评估。

更新2014年7月31日:

我用custom TFS build templates成功。它们有点复杂,但你可以用它们做很多很酷的事情。

对于在GitHub上托管的开源项目(如NuGet库),我认为你不能击败AppVeyor。我有几个项目,如Mailchimp.NET,它们有完整的构建和NuGet部署自动化。

+1

我现在已经从CruiseControl.NET升级到TeamCity并且很喜欢它。即使使用自定义的MSBuild脚本,这也更容易使用。 – 2011-04-05 19:10:49

0

我在过去曾使用过Nant,对于类似的任务有很多运气。您可以使用自动构建来启动它。 (http://nant.sourceforge.net/

如果你想要的东西更全面,你可以检查出威克斯(http://wix.sourceforge.net/

现在你真的确信一切的autmatic建设拉开序幕要更新直播的网站?或者你的意思是你使用你的cc工具启动了一个构建,然后它生成一个构建去上线?

如果有人在文件的新版本中签入,我不愿意进行实时网站更新。

您的数据库更新可能是最具挑战性的方面。但是,只要检查数据库更新的内容是更改脚本,它就不会坏。

+0

我们现在有2种构建类型。一个是开发版本,另一个是版本。开发版本每隔xx分钟执行一次代码检查,然后运行单元测试等,而发布版本只有在我们启动它时才执行,并且大部分开发版本都是在发布模式下执行的,并且将其标记为版本SVN。 – 2010-02-19 23:31:35

0

听起来像部署代码更改的两个主要功能是:1.复制文件和2.执行DB脚本更改。如果你看看使用MsBuild Community Tasks,有很多方便的构建任务可以帮助你。 SqlExecute和RoboCopy听起来就像是你需要使用的所有东西。这将需要你修改你的项目文件来扩展它们的构建行为,但是一旦完成,你就能够“脚本化”正在完成的手动部分。