我目前正在设置一个新的构建服务器,并且我对社区可能对 Hudson 或 CruiseControl.NET 等软件提出的任何建议感兴趣,这些软件可能会简化构建过程并为构建过程增加额外的价值。
以前,我使用自定义批处理文件设置了一个构建服务器,该批处理文件将运行 msbuild 和其他此类工具,这些工具由 subversion 钩子触发,以允许对每个分支进行连续构建。这个想法是最终我们还将执行自动化测试和/或静态分析,尽管我们从未真正做到这一点。该服务器还充当我们的源代码存储库、用于构建 Web 项目的测试机器,以及用于团队开发人员的自定义仪表板和门户的 Web 服务器。
在这一点上,我的想法是将旧构建服务器的一些职责分开,至少一个只负责创建构建的构建服务器,一个负责充当开发人员的内部网样式仪表板站点的 Web 服务器,也许作为 Subversion 存储库的附加 Web 服务器。如果事实证明将 Subversion 代码与 SvnServe 保持在同一台服务器上更好或更容易,那么我可能会选择将 Subversion 存储库放在 Web 服务器上,但仍然保持构建服务器分开。没有任何流行的构建服务器和 CI 解决方案的个人经验,我很好奇 CruiseControl.NET、Hudson 或其他解决方案如何适合这种类型的配置。看来这两个CC。
就技术而言,我正在处理基于 .NET/C# 的代码,它是 Web/WinForms/WPF 的混合体,我们使用一些单独的 Subversion 存储库来托管这些项目。此外,为一些遗留应用程序支持 Visual FoxPro 和 Visual Source Safe 会很好。我还想让更多的团队成员参与监控构建,并希望最终让开发人员尽可能简单地为他们自己的项目创建构建设置。另外我应该提到,我没有在 IIS 中设置基于 Java 的 Web 应用程序的经验,但我确实有相当多的设置和管理 ASP.NET 应用程序的经验,所以如果这可能会使基于 .NET 的产品更受欢迎,除非我可以否则相信。
更新(在研究了 Hudson 之后):在对 Hudson 提出所有建议之后,我开始研究在我的两台 Windows 2008 服务器上启动和运行它所涉及的内容。据我所知,Web 部分(主服务器)将在我的网络服务器上运行,但似乎不支持 IIS,因此这会使事情变得非常复杂,因为我想将它与我的其他 Web 应用程序托管在同一台机器上。在构建服务器上,我将安装 Hudson 的第二个副本,它将充当从属服务器,并且只执行由主服务器委托给它的构建。为了让它工作,我将安装 Hudson 作为 Windows 服务,还需要安装一些unix 兼容性实用程序。不幸的是UnxUtils 下载链接当我检查时似乎也坏了,所以在我解决这个问题之前我无法真正前进。所有这一切听起来真的和安装 CruseControl.NET 一样复杂,甚至更复杂。现在,不幸的是,这让我不得不研究 CruiseControl.NET 和 TeamCity。
更新(关于 TeamCity):在仔细研究 TeamCity 之后,我意识到至少服务器部分也是用 Java 编写的,并且以与 Hudson 非常相似的方式部署。幸运的是,Tomcat 似乎可用于在 IIS 中托管 servlet,尽管我找不到一个好的直接指南来描述如何实际完成此操作。所以当我遇到看起来可能是一个主要障碍的东西时,我暂时跳过了它。
TeamCity 专业版仅支持 TeamCity 默认身份验证,不支持更改身份验证方案。
由于 Windows 身份验证可能是我们想要的方向,现在看起来它可能会回到评估 CruiseControl.NET 或可能是 Hudson,如果我能掌握 UnxUtils 并了解有关如何托管仪表板的更多信息我现有的 IIS 配置中 Hudson 的一部分。任何指针?
更新(关于 Jenkins):我最终对 Hudson 进行了足够多的实验,最终得到了一个我很满意的合理构建服务器设置,并且如果我需要,它可以扩展以做更多事情。当然,一旦甲骨文接管了 Hudson,我就转而使用Jenkins,而 Jenkins 就是我今天使用的,带有一点点 powershell 来帮助将事情联系在一起。我现在对这种方法非常满意,除了基于 Java 之外,Jenkins 还对其他开发环境(如 .NET 和 MSBuild)提供了相当多的支持。