Deployment 您将如何部署此.net堆栈?

Deployment 您将如何部署此.net堆栈?,deployment,msbuild,continuous-integration,rake,psake,Deployment,Msbuild,Continuous Integration,Rake,Psake,我有一个.net应用程序,它有一个MVC3前端和两个windows服务 这完全取决于2个RavenDB安装,它们可以作为windows服务或IIS运行-我不介意在这里 服务使用TopShelf构建,测试使用straight Nunit完成。我使用Github作为我的回购协议 理想情况下,在每次成功的“发布”构建中,我希望构建、测试、擦除目录和RavenDb数据目录,然后部署(web和服务),然后启动流程,在我正在构建的控制台应用程序上运行,该应用程序可以在默认数据集中运行 您将如何管理此处的部署

我有一个.net应用程序,它有一个MVC3前端和两个windows服务

这完全取决于2个RavenDB安装,它们可以作为windows服务或IIS运行-我不介意在这里

服务使用TopShelf构建,测试使用straight Nunit完成。我使用Github作为我的回购协议

理想情况下,在每次成功的“发布”构建中,我希望构建、测试、擦除目录和RavenDb数据目录,然后部署(web和服务),然后启动流程,在我正在构建的控制台应用程序上运行,该应用程序可以在默认数据集中运行

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

我应该看看MSBuild/NAnt吗?诗篇,耙子?团队城市


您将如何管理构建后流程

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

我将Jenkins与psake结合使用,效果非常好。老实说,psake完成了大部分工作,Jenkins只需拉下源代码,然后调用我的psake脚本,但正如Nick Nieslanik所说,如果愿意,您可以让Jenkins直接调用MSBuild/NUnit/etc

詹金斯 通过仔细阅读Jenkins vs.CruiseControl(.NET)关于StackOverflow的线程,普遍的共识似乎是支持Jenkins。由于没有真正尝试过CruiseControl,我不能保证这一点,但我会说詹金斯非常棒。我发现詹金斯很容易安排。我快速浏览了一下CruiseControl.NET,发现詹金斯更容易上手。我根本没看过TeamCity,所以不能这么说

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

诗篇 到目前为止,我认为《诗篇》很棒。它基于rake语法,但比rake更适合Windows。由于它位于powershell之上,您可以利用它附带的许多方便的Windows管理功能。例如,请参见 这是一个通过你的psake任务直接设置和删除IIS应用程序池和站点的好例子。我认为这很好,我不确定您将如何在MSBuild、Nant或rake中实现这一点。基本的文件系统操作也是必不可少的——似乎比用一堆尖括号将一些文件复制到某个地方要好

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

也就是说,对于实际构建,我只是从psake中将其分包到msbuild,并在我想要构建的解决方案/项目文件上调用它。psake有一个内置命令,用于调用msbuild并指定要使用的版本,等等(老实说,到目前为止,最痛苦的是msbuild无法在VisualStudio中正常构建解决方案文件)

当您与RavenDB合作时,您可能有兴趣知道他们正在为(和)使用psake

有关一些好的诗篇技巧,请参阅



长话短说,我个人推荐詹金斯和诗篇。该组合将与git、msbuild、NUnit、IIS甚至windows服务很好地集成。

很有趣。jenkins和hudson之间有什么区别?还有,如果说TeamCity的话,会有什么好处?jenkins和hudson-至于TeamCity的好处,我不能告诉你,因为我没有使用TeamCity。我喜欢Jenkins,因为它很容易插拔不同的模块,而且几乎每个源代码管理和构建引擎都有一个插件。很抱歉花了这么长时间才回到这里!很好的回答:)