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

这完全取决于2个RavenDB安装,它们既可以作为Windows服务运行,也可以作为IIS运行-我在这里不打扰。

使用TopShelf构建服务,并使用直接的NUnint完成测试。我使用Github作为我的仓库。

理想情况下,在每次成功的“发布”构建上,我都希望构建,测试,擦除目录和RavenDb数据目录,然后进行部署(Web和服务),然后开始运行要在我正在构建的控制台应用程序上完成的过程运行默认数据集。

您将如何在此处管理部署?我还没有CI服务器。我有一个全新的服务器,可以根据需要使用。我已经很久没有做CI / CD了,我怀疑武器已经改变了。

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

您将如何管理后期制作流程?

最佳答案

我一直在将Jenkins与psake一起使用,并且效果很好。老实说,psake可以完成大部分工作,而Jenkins只需拉下源代码然后调用我的psake脚本即可,但是正如Nick Nieslanik所说,如果愿意,您可以轻松地让Jenkins直接调用MSBuild / NUnit / etc。
詹金斯
通过仔细研究Stackoverflow上的Jenkins与CruiseControl(.NET)线程,人们普遍同意Jenkins。我还没有真正尝试过CruiseControl,但我无法保证,但是我会说詹金斯非常出色。我发现詹金斯很容易设置。我快速浏览了CruiseControl.NET,发现Jenkins更容易上手。我根本没有看过TeamCity,所以不能这么说。

CI: Hudson with .Net vs CruiseControl.Net
What is the difference between Hudson and CruiseControl for Java projects?
How and why do I set up a C# build machine?

Jenkins有一个不错的插件系统,还有很多插件,其中包括一个用于Powershell的插件,可以很容易地调用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使得在Visual Studio中构建良好的解决方案文件变得无趣。)
在使用RavenDB时,您可能想知道他们正在将psake用于building RavenDB(和Rhino-ESB)。
有关一般的一些好的小品提示,请参见this post

长话短说,我个人会推荐詹金斯和普萨克。该组合将与git,msbuild,NUnit,IIS甚至Windows服务完美集成。

关于deployment - 您将如何部署此.net堆栈?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9590422/

10-08 22:36