使用ASP.NET的良好构建自动化和部署流程是什么?

9
我正在寻找一些自动化项目构建和部署的建议。
我们目前的开发环境使用ASP.NET、SVN、CCNET和一个MSBuild脚本来进行开发服务器构建。我考虑换成Cruise而不是CCNET,但我不确定它是否会给我带来额外的好处。
我想要自动化的是从自动构建完成后更新现场网站的过程。网站更新可能包括基础网站更新以及客户端更新,这些更新可以是代码和/或数据库更改,因此该过程需要足够灵活,以便处理这些情况。
我对此的灵感之一来自于这个视频,以及每个月花费的无尽时间来进行更新。

6年后的更新:应用程序发布自动化工具是专门为此设计的。BuildMaster是其中之一,而这个教程概述了所提到的过程。 - Karl Harnagy
3个回答

4
对于较小或个人项目,我建议使用像JetBrains的免费(而且很好用)的TeamCity。单元测试自动化、持续集成以及构建后发生的规则(包括将其移动到不同位置)。
对于较大的团队,我发现自定义MSBuild任务和RoboCopy的构建自动化效果最佳。手动在环境之间推广构建和使用MSBuild和RoboCopy自动化部分流程之间的巧妙结合可以在环境之间创建干净的断点(非常少的“糟糕,我不想在那里推送”错误)。这也让我们在推广之前让QA审查构建。
更新7/31/2014:
我成功地使用了自定义TFS构建模板。它们有点复杂,但您可以做很多酷炫的事情。
对于在GitHub上托管的开源项目(例如NuGet库),我认为你无法击败AppVeyor。我有一些项目,如Mailchimp.NET,具有完整的构建和NuGet部署自动化。

1
我已经从CruiseControl.NET升级到TeamCity,并且我喜欢它。即使使用自定义的MSBuild脚本,这也更容易使用了许多。 - Brian Surowiec

0

我过去在类似的任务中使用了Nant,并且非常幸运。您可以使用自动化构建来启动它。( http://nant.sourceforge.net/ )

如果您想要更全面的东西,可以查看wix (http://wix.sourceforge.net/)

现在,您真的确定自动构建启动的所有内容都要更新实时站点吗?还是您的意思是,您使用cc工具启动构建,然后它生成一个用于上线的构建?

当有人检入文件的新版本时,我会很讨厌实时站点更新。

您的数据库更新可能是最具挑战性的方面。但是只要为数据库更新检入的内容是更改脚本,就不会太糟糕。


我们现在有两种构建类型。一种是开发构建,另一种是发布构建。开发构建在代码提交后每 xx 分钟运行一次单元测试等操作,而发布构建只有在我们启动它时才会执行大部分开发构建所做的操作,并以版本形式标记在 SVN 中。 - Brian Surowiec

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接