【问题标题】:Suggestions for software to ease setting up a build server用于简化构建服务器设置的软件建议
【发布时间】:2011-04-07 16:13:20
【问题描述】:

我目前正在设置一个新的构建服务器,并且我对社区可能对 Hudson 或 CruiseControl.NET 等软件提出的任何建议感兴趣,这些软件可以简化构建过程并增加额外的价值。

以前我使用自定义批处理文件设置了一个构建服务器,该批处理文件将运行 msbuild 和其他此类工具,这些工具由 subversion 挂钩触发,以允许每个分支完成连续构建。这个想法是最终我们还将执行自动化测试和/或静态分析,尽管我们从未真正做到这一点。该服务器还充当我们的源代码存储库、用于构建 Web 项目的测试机器,以及用于团队开发人员的自定义仪表板和门户网站的 Web 服务器。

在这一点上,我的想法是将旧构建服务器的一些职责分开,至少一个构建服务器只负责创建构建,一个网络服务器负责充当开发人员的内部网样式仪表板站点,也许还有一个额外的 Web 服务器作为 Subversion 存储库。如果事实证明将 Subversion 代码与 SvnServe 保持在同一台服务器上更好或更容易,那么我可能会选择将 Subversion 存储库放在 Web 服务器上,但仍然保持构建服务器分开。没有任何流行的构建服务器和 CI 解决方案的个人经验,我很好奇 CruiseControl.NET、Hudson 或其他解决方案如何适合这种类型的配置。例如,CC.NET 和 Hudson 似乎都有 Web 界面,但文档并没有明确说明这在不同的硬件/系统配置下如何发挥作用,所以我不确定是否需要 Web 部分在构建中服务器本身与否。

就技术而言,我正在处理基于 .NET/C# 的代码,这些代码混合了 Web/WinForms/WPF,我们使用一些单独的 Subversion 存储库来托管这些项目。此外,为一些遗留应用程序支持 Visual FoxPro 和 Visual Source Safe 会很好。我还想让更多的团队成员参与监控构建,并希望最终让开发人员尽可能简单地为他们自己的项目创建构建设置。另外我应该提到,我没有在 IIS 中设置基于 Java 的 Web 应用程序的经验,但我确实有相当多的设置和管理 ASP.NET 应用程序的经验,所以如果这可能会使基于 .NET 的产品更受欢迎,除非我可以否则相信。

更新(在研究 Hudson 之后): 在为 Hudson 提供所有建议之后,我开始研究在我的两台 Windows 2008 服务器上 get it up and running 所涉及的内容。据我所知,Web 部分(主服务器)将在我的网络服务器上运行,但似乎不支持 IIS,因此这会使事情变得非常复杂,因为我想将它与我的其他 Web 应用程序托管在同一台机器上。在构建服务器上,我将安装 Hudson 的第二个副本,它将充当从属服务器,并且只执行由主服务器委托给它的构建。要让它工作,我会是installing Hudson as a Windows Service,还需要安装一些unix compatibility utilities。不幸的是,UnxUtils download link 在我检查时似乎也被破坏了,所以在我解决这个问题之前我无法真正前进。所有这一切听起来真的和安装 CruseControl.NET 一样复杂,甚至更复杂。不幸的是,现在这让我不得不研究 CruiseControl.NET 和 TeamCity。

更新(关于 TeamCity):在仔细研究 TeamCity 之后,我意识到至少服务器部分也是用 Java 编写的,并且部署方式与 Hudson 非常相似。幸运的是,Tomcat 似乎可用于在 IIS 中托管 servlet,尽管我找不到一个好的直接指南来描述如何实际完成此操作。因此,当我遇到看起来可能是major snag 的东西时,我暂时跳过了它。

仅限 TeamCity 专业版 支持 TeamCity 默认 认证,不支持 更改身份验证方案。

由于 Windows 身份验证可能是我们想要的方向,现在看起来它可能会重新评估 CruiseControl.NET 或 Hudson,如果我能掌握 UnxUtils 并了解更多关于我如何做的信息在我现有的 IIS 配置中托管 Hudson 的仪表板部分。有什么指点吗?

更新(关于 Jenkins):我最终对 Hudson 进行了足够多的实验,最终得到了一个我很满意的合理构建服务器设置,如果我可以扩展它以做更多事情需要。当然,当 Oracle 接管 Hudson 和 Jenkins 后,我转而使用 Jenkins,这就是我今天使用的,带有一点点 powershell 来帮助将事情联系在一起。我现在对这种方法非常满意,除了基于 Java 之外,Jenkins 还对其他开发环境(例如 .NET 和 MSBuild)提供了相当多的支持。

【问题讨论】:

    标签: msbuild cruisecontrol.net hudson dashboard build-server


    【解决方案1】:

    我强烈推荐使用Hudson。它不仅允许您持续构建 .NET 应用程序,还可以运行代码分析和单元测试。它易于安装(只需将 WAR 文件部署到 Web 服务器,例如 Tomcat)并且具有许多配置选项。您还可以使用大量可用的插件,其中许多是由其他 Hudson 用户编写的。最重要的是,它是免费的并受到积极支持。

    【讨论】:

    • 感谢您的信息和认可,但我仍然有点不确定 Hudson 是否允许将产品的 Web 部分与构建服务器分离到单独的机器上。另外我要强调的是,我真的更喜欢使用 IIS 作为我的 Web 服务器,尽管我可能正在考虑使用 Apache 来让 SVN 使用 NTLM 并使用一些有吸引力的存储库查看器软件。
    • Hudson 引擎将运行在与应用程序服务器相同的服务器上(我认为纯粹的网络服务器是不够的)。 Hudson 还内置了 winstone,因此您不需要应用服务器。你总是可以在 Hudson 前面使用一个单独的 Web 服务器。实际的构建过程可以在不同的机器上运行。通常你会为此使用哈德逊奴隶。您可以附加多个从站,Hudson 可以根据负载将作业分配到不同的构建机器。我还不需要负​​载平衡。从站可以在不同的操作系统上运行,因此您可以使用不同的配置测试您的应用程序。
    • 有趣,我可能是错的,但安装多个 Hudson 实例据我了解,这需要在我的构建服务器上启用 IIS 或其他一些 Web 服务器才能让这个从属进程工作在我看来就像它开始引入一定程度的复杂性,这种复杂性可以追溯到应该与 Hudson 一起出现的假定简单性,并有可能破坏我试图避免的构建服务器。我有一种感觉,我必须深入研究 CC.NET、Hudson 和其他产品文档,才能真正了解什么适合我的需求。
    • 请查看我添加到关于 Hudson 的原始问题的更新。我仍在尝试了解托管基于 Java 的 Web 应用程序的可能性和需要什么,并试图弄清楚我如何才能让它按照我的需要工作。
    • 我最终使用了 Hudson/Jenkins。有关更多信息,请参阅我的原始帖子的更新。
    【解决方案2】:

    对于我们的决策过程,我们从以下概述开始。

    http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

    我们的主要目标是 java,即使在 6 个月没有人创建工作后也易于配置/使用。我们放弃了旧版本的巡航控制系统,因为没有人真正知道如何使用它。如果你想超越持续集成,一些商业产品是不错的。看看并自己决定。

    小心,我不知道这个矩阵是最新的。所以有些项目现在可能已经实现了更多的功能。

    一个有趣的替代方案可能是 Atlasian 的 Jira studio。如果您使用托管版本,您没有太多支持问题,它带有颠覆、竹子和好东西(jira+greenhopper、汇合、坩埚、鱼眼)。 http://www.atlassian.com/hosted/studio/

    【讨论】:

      【解决方案3】:

      我会在这里投票给TeamCity。它非常非常容易启动和运行,与您的所有 .NET 东西集成,没有任何麻烦。构建本身由代理运行,代理可以在构建服务器上或根据要求在另一台机器上运行——它们甚至可以在不同国家/地区的不同网络上运行完全不同操作系统的机器上。

      【讨论】:

      • TeamCity 中构建代理的概念似乎与 CC.NET Build Server 非常相似,而 TeamCity 中的构建服务器似乎更像 CruiseControl.NET 中的 Web Dashboard。不幸的是,在哈德逊,一切似乎都默认在一台机器上运行。到目前为止,我从这个角度看到了功能上的很大差异,但似乎人们认为 CC.NET 中的 XML 配置必须非常复杂,因为许多人选择 Hudson 或 TeamCity 主要是为了便于构建的 GUI 配置.
      【解决方案4】:

      我同意怀亚特·巴尼特的观点。 TeamCity 是最好的选择。它非常易于配置和使用。此外,TeamCity 有一个免费的专业版。以前我们在项目中使用 CruiseControl.NET。这也是一个强大的工具,但它非常复杂且难以理解。

      【讨论】:

      • 到目前为止,对于我的使用 CruiseControl.NET 实际上似乎是最简单的,因为它与我正在寻找的非常匹配,因为它需要在构建服务器上安装一个独立的构建服务应用程序仪表板可以放置在单独的 Web 服务器上。到目前为止,Hudson 似乎将两者放在一个包中以在单台机器上运行,而对于 TeamCity,“构建服务器”是仪表板还是 Web 前端还是其他部分还不清楚。由于这些建议,我很想倾向于 Hudson 或 TeamCity,但是......
      • 在 TeamCity 的情况下,“构建服务器”可以分布在网络上。 TeamCity其实是一个web前端+服务,监控代码仓库,管理构建代理等。你可以在没有任何本地安装的构建代理的情况下使用TeamCity。
      【解决方案5】:

      s.ermakovich 所说:TeamCity 和 Hudson 都将 Web UI 与构建代理分开。您不需要在构建代理上安装 IIS。您需要在任何构建节点上安装 JVM 和代理软件 - 非常简单。

      【讨论】:

        猜你喜欢
        • 2011-04-25
        • 1970-01-01
        • 2011-02-16
        • 2012-11-28
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        • 2015-12-19
        • 2015-10-16
        相关资源
        最近更新 更多