就在几年前,开发人员实际上已经为客户制作了构建版本。这显然是一场灾难,原因太多,无法列出。
然后,当我们开始了解我们的方法错误时,我们寻找一种在专用构建机器上自动构建整个应用程序的方法。当时的文化非常厌恶引入外部工具,因此我们通过编写VB应用程序来构建自己的autobuild系统。
这项工作正常一段时间,直到项目的结构开始变化,新项目被添加,我们需要以不同的方式构建应用程序。然后,我们的手动自动售货机的弱点变得明显,随着时间的推移,越来越繁重。这种疾病现在已经发展到QA(谁拥有我们的构建过程)甚至无法维持autobuilder,因为它需要越来越多的编程技能。每次我们在现有项目中添加项目或更改某些内容时,它都会消耗更多的开发人员时间才能使其正常工作。有几天我们无法生成构建,因为系统已经坏了。
我现在处于可以改变这个过程的位置,我想要废弃整个系统并在其中放置其他东西。我的目标是:
你有什么经历?你能推荐一个autobuild系统吗?我应该有不同的目标吗?
答案 0 :(得分:5)
我目前正在使用与Ant集成的CruiseControl来控制项目构建。这允许构建计划的灵活性,并且意味着您可以使用Ant脚本相当容易地自动化整个构建过程。此外,在缺陷修复期间,您可以设置CruiseControl来监视源控制提交而不是时间段,并在发生这些时间段时进行构建。这使开发人员可以快速反馈缺陷修复程序。
答案 1 :(得分:5)
我使用FinalBuilder和FinalBuilder Server进行夜间构建。有时候这有点儿错误,但是如果你认为通过它可以很容易地创建可以构建X项目类型的可扩展项目,那么从更改脚本构建它的数据库并将其部署到测试服务器。
它还可以处理各种奇怪和奇妙的事情,比如每晚构建ZIP并将其上传到FTP或自动创建ISO图像。
答案 2 :(得分:4)
如果您使用的是Microsoft堆栈,请务必查看MSBuild。
Joel总是在谈论FinalBuilder有多棒,所以这也值得一看。
答案 3 :(得分:4)
我们刚刚从一组手动滚动的Perl脚本迁移到Buildbot设置。我发现它是因为那是Google's using for Chrome。
你可以做夜莺,或者它可以与源代码控制集成,以便在任何人进行签入或其他各种事情时进行隔离的测试构建。它也是平行的;您可以在构建服务器场中拥有多台计算机,用于执行专门任务或仅处理更多负载。
整个系统是用Python编写的,因此它与平台无关,如果您需要在多个平台上进行构建,这一点非常重要。它可以通过命令行执行任何操作;我们让它为用户模式组件调用MSBuild,为内核模式组件调用DDK build
,并为单元测试构建运行产品。
开箱即用它支持most OSS source control tools,但是如果你正在使用TFS或其他东西,你可能需要修改你在奴隶机器上安装的软件包。
答案 4 :(得分:2)
我认为你在这里走在正确的轨道上。
无论是谁负责自动构建流程,都需要对解决方案如何组合起来有一个基本的了解。这并不一定意味着知道如何编写代码或架构师解决方案,但他们需要深入了解解决方案如何编译,打包自身等。
您可能需要分担人员或团队之间的构建责任才能实现此目的。我会说每日构建是一个“团队责任”。
我将着眼于建立基线构建配置,该配置可以扩展为“特殊用途”构建(除了构建发布版本之外),例如国际化版本,fxCop /质量工具配置,构建+运行单元测试,持续集成构建,在开发人员工作站上运行的构建配置等。
相反,我的目标是实现以下目标:
至于工具推荐,我使用了FinalBuilder,Visual Build Pro,MSBuild / Team Build,nAnt,CruiseControl和CIFactory plus以及老式的批处理文件。
每个都有它的优点和缺点,我不打算提出建议,只是说具有良好UI支持的产品更容易使用,但有时远没那么强大。如果您正在使用VIsual Studio,MSBuild非常强大,但学习曲线有点陡峭。
答案 5 :(得分:1)
对于随MS Visual Studio提供的工具,您可能希望使用MSBuild。 MSBuild的其他Community工具集甚至可以让您从Subversion和zip输出中检出代码。
我们在公司成功使用它。项目包含多个解决方案,包含100多个子项目。像魅力一样。
答案 6 :(得分:1)
Visual Build Pro很不错。我认为这将满足您对 拥有系统的QA 的要求。但是不要误解我的意思,它非常强大。
答案 7 :(得分:1)
我们使用CruiseControl.NET和UppercuT(使用NAnt)来执行此操作。 UppercuT使用惯例进行构建,因此通过回答三个问题(命名的解决方案是什么?源代码控制的路径是什么?您公司的名称是什么?)并且您正在构建,这使得某人很容易上手。
http://code.google.com/p/uppercut/
这里有一些很好的解释:UppercuT
答案 8 :(得分:0)
我们使用Hudson buildbot从ant构建脚本构建大型Java Web应用程序。哈德森非常适合我们的目的。它具有主/从设置,因此可以同时进行构建(在计时器或按需上)。从属节点可以是任何操作系统/硬件组合,前提是它已经具有所需的构建工具并且在网络上(并且不会每10分钟崩溃)。
完整的基于Web的界面,包括实时控制台输出,更改日志,构建中的工件,可通过网络获得,包括以前的构建(如果成功)。 Awesomesauce!