3

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

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

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

理想情况下,在每个成功的“发布”构建中,我都想要构建、测试、擦除目录和 RavenDb 数据目录,然后部署(Web 和服务),然后启动进程以在我正在构建的控制台应用程序上运行完成,该应用程序可以在一组默认数据中运行。

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

我应该看看 MSBuild/NAnt 吗?PSake,瑞克?队城?

您将如何管理后期构建流程?

4

2 回答 2

4

我一直在使用 Jenkins 和 psake,它运行良好。老实说 psake 完成了大部分工作,Jenkins 只是简单地拉下源代码,然后调用我的 psake 脚本,但正如 Nick Nieslanik 所说,如果你愿意,你可以很容易地让 Jenkins 直接调用 MSBuild/NUnit/etc。

詹金斯

通过仔细阅读 StackOverflow 上的 Jenkins 与 CruiseControl(.NET) 线程,普遍的共识似乎是选择 Jenkins。没有真正尝试过 CruiseControl 我不能保证这一点,但我会说 Jenkins 非常好。我发现 Jenkins 很容易设置。我快速浏览了一下 CruiseControl.NET,发现 Jenkins 更容易上手。我根本没有看过 TeamCity,所以无法谈论它。

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

帕萨克

到目前为止,我认为psake很棒。它基于 rake 语法,但比 rake 更原生于 Windows。由于它位于 powershell 之上,因此您可以利用它附带的许多方便的 Windows 管理功能。例如,有关 直接从您的 psake 任务设置和拆除 IIS 应用程序池和站点的一个很好的示例,请参阅这篇文章。我认为这很好,但我不确定您将如何在 MSBuild、Nant 或 rake 中执行此操作。基本的文件系统操作也是它的生计——似乎比使用一堆尖括号只是为了在某处复制一些文件要好。

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

也就是说,对于实际构建,我只是将其从 psake 中移出到 msbuild 并在我想要构建的解决方案/项目文件上调用它。psake 有一个内置命令,用于调用 msbuild 并指定要使用的版本等。(说实话,到目前为止,最痛苦的是 msbuild 对在 Visual Studio 中构建得很好的解决方案文件感到厌烦。)

当您使用 RavenDB 时,您可能想知道他们正在使用 psake 来构建 RavenDB (和Rhino-ESB)。

一般而言,有关一些好的 psake 技巧,请参阅这篇文章


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

于 2012-04-08T23:19:10.667 回答
1

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

于 2012-03-07T05:44:20.487 回答