您推荐哪些工具来自动构建您的应用程序? [关闭]
Posted
技术标签:
【中文标题】您推荐哪些工具来自动构建您的应用程序? [关闭]【英文标题】:What Tools Do You Recommend To Auto-Build Your Application? [closed] 【发布时间】:2008-10-10 12:49:26 【问题描述】:就在几年前,开发人员实际上制作了交付给客户的版本。这显然是一场灾难,原因不胜枚举。
然后,当我们开始了解我们方法的错误时,我们寻找一种在专用构建机器上自动构建整个应用程序的方法。当时的文化非常反对引入外部工具,因此我们通过编写 VB 应用构建了自己的自动构建系统。
这工作了一段时间,直到项目的结构开始发生变化,添加了新项目,我们需要以不同的方式构建应用程序。然后,我们的手动汽车制造商的弱点变得明显,并且随着时间的推移变得越来越繁重。这种疾病现在已经发展到 QA(拥有我们的构建过程)甚至无法维护自动构建器的地步,因为它需要越来越多的编程技能。每次我们在现有项目中添加项目或更改某些内容时,它都会消耗更多的开发人员时间来使其正常工作。有几天我们因为系统损坏而无法生成构建版本。
我现在处于可以更改此流程的位置,并且我希望废弃整个系统并在其位置上放置其他东西。我的目标是:
拥有一个可以在每天特定时间以零人工干预运行的自动构建系统。它应该能够收集所有源代码、编译所有应用程序、创建设置、将成品放在网络共享上,并可能触发自动化测试系统启动(我们使用 QTP)。 自动构建系统应该足够灵活,可以轻松适应项目中的变化,而无需进行大修。 它应该足够简单,以便 QA 可以拥有系统,而不需要开发人员资源来更改构建方式。你有什么经验?你能推荐一个自动构建系统吗?我应该有不同的目标吗?
【问题讨论】:
【参考方案1】:我目前正在使用与 Ant 集成的 CruiseControl 来控制项目构建。这允许构建计划的灵活性,并意味着您可以使用 Ant 脚本相当容易地自动化整个构建过程。此外,在缺陷修复期间,您可以设置 CruiseControl 来监视源代码控制提交而不是时间段,并在这些发生时进行构建。这使得开发人员可以非常快速地反馈缺陷修复。
【讨论】:
+1 用于 Cruise Control,我兼职作为公司的构建工程师,我将它用于夜间构建(大约 300 多部手机在多个产品上),也将它用于发布构建。 标志性的是,我现在已经切换到 Hudson :) IMO,它比 CC 更精致,并且更容易设置不同的项目类型。【参考方案2】:我使用 FinalBuilder 和 FinalBuilder Server 进行夜间构建。有时它有点错误,但如果你认为它很容易创建可以构建 X 项目类型的可扩展项目,从更改脚本构建它的数据库并将其部署到测试服务器。
它还可以处理各种奇怪而奇妙的事情,例如压缩夜间构建并将其上传到 FTP 或自动创建 ISO 映像。
【讨论】:
【参考方案3】:如果您在 Microsoft 堆栈中,一定要研究 MSBuild。
Joel 一直在不停地谈论 FinalBuilder 有多棒,所以这可能也值得一看。
【讨论】:
【参考方案4】:我们刚刚从一组手动 Perl 脚本迁移到 Buildbot 设置。我找到它是因为这就是Google's using for Chrome。
您可以做夜间工作,或者它可以与源代码管理集成以在任何人进行签入或其他各种事情时进行隔离测试构建。它也是并行的;您可以在构建农场中拥有多台机器,用于特殊任务或仅用于处理更多负载。
整个系统是用 Python 编写的,因此它与平台无关,如果您需要在多个平台上进行构建,这一点很重要。它可以做任何你可以从命令行做的事情;我们让它为用户模式组件调用 MSBuild,为内核模式部件调用 DDK build
,并为单元测试构建运行产品。
开箱即用它支持most OSS source control tools,但如果您使用的是 TFS 或其他东西,您可能需要修改安装在从属计算机上的软件包。
【讨论】:
+1 构建机器人!我最近从Cruise Control切换到BB,优点很多(更容易配置,跟踪任意日志文件,易于调试,可笑的IRC控制机器人......)【参考方案5】:我认为你在这里是正确的。
负责自动构建过程的人员需要对您的解决方案如何组合有一个基本的了解。这并不一定意味着知道如何编写代码或架构解决方案,但他们需要对解决方案如何编译、打包等有深入的了解。
您可能需要在人员或团队之间分担构建责任才能完成此任务。我会说每日构建是“团队责任”。
我会考虑建立一个基线构建配置,它可以扩展为“特殊用途”构建(除了构建一个发布版本),例如国际化版本、fxCop/质量工具配置、构建 + 运行单元测试、持续集成构建、在开发人员工作站上运行的构建配置等。
相反,我的目标是实现以下目标:
自动版本控制、签名等 能够生成详细输出(日志记录)以帮助调试构建中断 在这一点上 - 它应该正确处理错误、捕获尽可能多的信息并正确记录 一致性 - 每次都应该以相同的方式产生可重复的结果 在干净、访问受限的环境中运行 很好的注释/记录,以便新员工等可以理解。 生成发行说明、编译指标、生成报告的选项(如果此选项可用) 能够部署到多个环境 支持从源代码管理中获取源代码的不同方式,例如按变更集、标签、日期等至于工具推荐,我使用过 FinalBuilder、Visual Build Pro、MSBuild/Team Build、nAnt、CruiseControl 和 CIFactory plus 以及老式的批处理文件。
每个都有其优点和缺点,我不打算提出建议,只是说具有良好 UI 支持的产品更易于使用,但有时功能远没有那么强大。如果您使用 VIsual Studio,MSBuild 非常强大,但学习曲线有些陡峭。
【讨论】:
很好的答案,但我真的希望您在看到它们时能包含更多的优点和缺点,因为您似乎使用了很多工具。 +1【参考方案6】:对于随 MS Visual Studio 提供的工具,您可能希望使用 MSBuild。用于 MSBuild 的附加 Community 工具集甚至可以让您从 Subversion 和 zip 输出中签出代码。
我们正在公司成功地使用它。项目由多个解决方案组成,包含 100 多个子项目。像魅力一样工作。
【讨论】:
【参考方案7】:Visual Build Pro 很好,如果你的构建机器是 Windows。我认为这将满足您对QA 拥有系统 的要求。但不要误会,它非常强大。
【讨论】:
【参考方案8】:我们使用 CruiseControl.NET 和 UppercuT(使用 NAnt)来执行此操作。 UppercuT 使用约定进行构建,因此通过回答三个问题(解决方案的名称是什么?源代码控制的路径是什么?贵公司的名称是什么?),您就可以很容易地开始构建。
http://code.google.com/p/uppercut/
这里有一些很好的解释:UppercuT
【讨论】:
【参考方案9】:我们使用 Hudson buildbot 从 ant 构建脚本构建大型 Java Web 应用程序。哈德逊对我们来说非常甜蜜。它具有主/从设置,因此可以同时进行构建(在计时器上或按需)。从节点可以是任何操作系统/硬件组合,只要它上面已经有所需的构建工具并且在网络上(并且不会每 10 分钟崩溃一次)。
完整的基于 Web 的界面,包括实时控制台输出、更改日志、构建中的工件可在整个网络中使用,包括以前的构建(如果成功)。太棒了!
【讨论】:
以上是关于您推荐哪些工具来自动构建您的应用程序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
您推荐哪些用于自动生成 JSON 的 PL/SQL 库? [关闭]