你将如何部署这个.net堆栈?

时间:2012-03-06 19:25:10

标签: deployment msbuild continuous-integration rake psake

我有一个.net应用程序,它有一个MVC3前端和2个Windows服务。

这一切都取决于2个RavenDB安装,可以作为Windows服务或IIS运行 - 我不会在这里烦恼。

使用TopShelf构建服务,并使用直接NUnint进行测试。我使用Github作为我的回购。

理想情况下,每次成功发布'构建我喜欢构建,测试,擦除目录和RavenDb数据目录,然后部署(Web和服务),然后启动流程以在控制台应用程序上运行完成我可以在默认数据集。

您将如何管理此处的部署?我还没有CI服务器。我有一个全新的服务器,我可以随心所欲。我很长时间没有完成CI / CD,我怀疑武器已经改变了。

我应该关注MSBuild / NAnt吗? PSake,Rake?团队城市?

您将如何管理帖子构建过程?

2 个答案:

答案 0 :(得分:4)

我一直在使用带有psake的Jenkins,而且效果非常好。老实说psake做了大部分的工作,Jenkins只是简单地拉下来源然后调用我的psake脚本,但正如Nick Nieslanik所说,如果你愿意,你可以轻松地让Jenkins直接调用MSBuild / NUnit / etc。

詹金斯

从StackOverflow上的Jenkins与CruiseControl(.NET)线程的细读中,普遍的共识似乎是与Jenkins一起使用。没有真正试过CruiseControl我不能保证,但我会说詹金斯非常好。我发现詹金斯很容易设置。我快速浏览了CruiseControl.NET,发现Jenkins更容易上手。我根本没有看过TeamCity,所以不能这样说。

Jenkins有一个很好的插件系统和一个很多插件,包括一个用于Powershell的插件,可以很容易地调用psake脚本。

Psake

到目前为止,我认为psake非常棒。它基于rake语法,但对于Windows而言比rake更具原生性。由于它位于PowerShell之上,因此您可以利用其附带的许多方便的Windows管理功能。例如,请参阅this post 有关从您的psake任务直接设置和拆除IIS应用程序池和站点的一个很好的示例。我认为这很棒,而且我不确定你是如何在MSBuild,Nant或rake中这样做的。基本的文件系统操作也是它的面包和黄油 - 似乎比拥有一堆尖括号只是为了复制某些文件。

对于MSBuild和Nant,我认为它们都非常强大,但为这类事情编辑XML文件感觉很痛苦。 Powershell是一种适用于深度Windows集成的脚本语言。 psake是用于构建和其他任务的DSL。这是一个很好的组合。

那就是说,对于实际的构建,我只是从psake中将其存储到msbuild并在我想要构建的解决方案/项目文件上调用它。 psake有一个内置的命令,用于调用msbuild并指定要使用的版本等。(真相告诉我们到目前为止最痛苦的是来自msbuild borking up在Visual Studio中构建得很好的解决方案文件。)

当您使用RavenDB时,您可能有兴趣知道他们正在使用psake building RavenDB(以及Rhino-ESB)。

对于一般的一些好的psake提示,请参阅this post


长话短说,我个人推荐Jenkins和psake。该组合将与git,msbuild,NUnit,IIS以及甚至Windows服务很好地集成。

答案 1 :(得分:1)

我使用Jenkins作为作业执行引擎。然后我可以创建一组MSBuild脚本来执行核心构建并使用Jenkins插件模型添加pre&根据需要发布构建任务(即NUnit执行和结果解析,某些部署的Powershell脚本执行)等.Jenkins使用Post / Pre-commit挂钩与Github进行了很好的集成,允许您非常简单地设置CI构建。