2009-01-20 59 views
14

我想这里的每个人都会同意,为了被视为一个专业的软件公司,你必须有一些基本的东西。如何使用构建服务器启动并运行?

毫无疑问的是,这些事情之一是构建服务器,问题是,你需要走多远。

  • 构建服务器的最低要求是什么? (某处只是编译?)
  • 什么是您的构建服务器的终极目标是什么? (计划,源代码控制集成,自动部署到测试/ Live服务器)
  • 哪里是一个良好的开端假设你有什么的时刻?

如果我们能够列出一些业余开发人员可以采用的简单任务,以便将它们设置到功能齐全的构建服务器的正确轨道上,那将是非常棒的。

这也将是很好的听到人们觉得他们执行所有他们需要的功能的“完整的”系统设置,以及他们如何去约从头开始建立的一切。

回答

12

你可以寻找到Cruise Control开始。

还有CruiseControl.net如果这是你的毒药。

本质不过,你需要以下原料:

  • 专用环境(虚拟机/服务器不使用一个开发人员的机器,除非它只是你即使是这样,运行一个虚拟机,如果你能。 。更容易将其移动到服务器如果在您的组织变为可用/)
  • 一个支持标记源代码控制系统/标记版本(例如,Subversion + TortoiseSVN
  • 构建脚本。这些可以是使用命令行启动devenv.exe或msbuild.exe应用程序的批处理文件,也可以使用类似AntNAnt的文件。

在这种情况下,CruiseControl充当Continous Integration服务器,并且可以确保在检入代码时完成了构建。这意味着你知道the build is broken是否比你每晚做的更快。不过,你应该也可以每晚做一次。

+1

哈德森现在有我的偏好。它具有我需要的所有功能,并且我发现它更容易设置和。 – 2009-03-08 05:50:03

+0

我也认为哈德森是快速起步和跑步的更好选择。 – Tim 2009-10-18 23:23:30

2

如果您使用Cruise Control,则启动的位置是一个Ant build.xml,可以手动执行作业。

您需要一个版本控制系统,可以做标签签出。

您需要使用Ant任务运行JUnit测试并生成HTML报告。

0

我不能给大家介绍了我们如何设置我们构建服务器了(我只参与在开始)的细节,但:

  1. 我们开始了一个内部系统,实施中ASP.NET和一个.NET Windows服务,使用NAnt来完成实际的构建。实际上,大多数工作流程都是在NAnt中实现的(例如,给人们发电子邮件,复制周围的东西等)。
  2. 我们转移到了JetBrains TeamCity(有一个免费的可用裁减版本),它仍然为我们提供了很好的服务。

我们将它用于由commit触发的构建:这些构建二进制文件并运行单元测试。从这里,我们可以做一个完整的构建,也可以完成MSI。从那里开始,我们有了一系列运行更深入测试的系统测试版本,这些系统测试版本涵盖了使用虚拟机构建的环境(使用单独的域控制器,SQL Server框等)。当系统测试通过时,构建可用于我们的QA部门进行手动测试以及一些我们尚未实现自动化的回归测试。

2

我说你必须先实施一个构建策略,这样你才能以结构化的方式构建你的代码 - 我使用NANT。

对于基本的构建服务器 - 使用其中一个CI产品来监控您的源代码管理,并在检测到更改时触发构建。例如:cruiseControl。

一旦你获得了基本构建 - 在成功构建之后添加单元测试的运行。

我已经建立的最成功的系统有3个不同的版本: - - 一个在检查时触发的系统 - 所有这些都是构建代码。 - 一个随需应变的应用程序,生成安装程序,然后将安装程序安装到共享驱动器中,供测试人员选择 - 每天在晚上10点发布的日志。这: - 进行了一些代码生成从UML模型 建立DB和C#代码 - 构建代码 - 创建了一个测试Oracle实例 一个新的版本验证测试用户 - 运行应用程序架构到数据库 - 发射了一串单元测试 - 清理数据库用户(如果测试成功) - 跑覆盖分析构建单元代码覆盖率的报告中,我们使用这NANT,CruiseControl.NET,

软件自定义代码生成系统,构建oracle模式的自定义应用程序以及用于代码分析的NCover。

2

首先阅读Martin Fowler关于Continuous Integration的优秀论文。

我们为一个主要项目> 2000 kSLOC建立了这样一个系统,并证明它本身是非常宝贵的。

HTH

欢呼声,

罗布

0

在Java领域我已经测试可用构建环境。自动构建的问题是,你经常花费相当多的时间来跟踪它。在我们从atlassian转向商业bamboo之后,我们发现我们不得不花费大量的时间来呵护构建箱,这在我们的案例中是非常好的经济。 Bamboo还支持集群,因此您可以根据需求的变化添加便宜的盒子。

1

我使用Cruisecontrol.NET和msbuild构建脚本。

我可以手动使用buildscript,这样我就可以获得最新版本的代码库,使用命令行很容易构建代码库。 (如果您正在处理由多个解决方案组成的应用程序,这非常有趣)。

接下来,我的CruiseControl.NET buildserver也使用这个buildscript。它会定期检查是否有更改提交给源代码管理。
如果发生这种情况,CC.NET会执行我在buildscript中定义的'最新'任务,构建所有内容,执行单元测试并执行静态代码分析(fxcop)。

我的'buildserver'只是一个旧的工作站。这是一款带有1GB内存的PIV,3Ghz,它完美地完成了它的工作。

我会觉得有趣的另外一件事是有能力自动部署新版本或建立设置。 我还没有这样做,因为我不知道这是一个好主意,也没有找到一个好的策略,但尚未这样做... 我的意思是;正在将一些组件的新版本部署到关键任务应用程序的生产中是一个好主意?我不这么认为...

我认为这是一个良好的开端: [http://confluence.public.thoughtworks.org/display/CC/Home;jsessionid=5201DA7E8D361EB164C40E519DA0F0DE][1]

至少,这就是我开始建立我的构建服务器时看。 :)

[1]:CruiseControl的

的首页
0

尝试&找到的东西,与您现有的做法适合在建设方面 - 例如例如,如果您使用的是Maven,那么尝试&就不太适合使用基于Ant的buildserver!

理想情况下,它应该能够监视您的源代码管理系统,检出代码,构建,运行一些测试。&发布结果时不会意识到它,或者至少不会“直到它报告失败。就个人而言,我建议哈德森(https://hudson.dev.java.net/)作为一个很好的起点,因为它很容易安装&运行&有一个体面的用户界面。

4

Hudson是一个伟大的CI。

我们在本地经营的农场,但我们开始通过下载的hudson.war和做

Java的罐子的hudson.war

它与SCM,臭虫货运系统实在是真棒集成。

如果你想保留旧版本,你需要一些磁盘空间。

享受它是迄今为止最直接的CI解决方案。

HTH, Hubert。

2

Cruise,Maven,Hudson等都很棒,但它总是值得拥有一个权宜之计。

你应该有一个批处理文件,shell脚本或简单的书面指令,允许你从任何机器运行构建。我们过去建立的服务器不可用,并且能够快速切换到另一台机器是非常宝贵的!

构建机器的规格不需要很重要,除非你有一个怪物项目。我们试着将构建时间缩短到10分钟(包括单元测试),并且我们有一个非常大的项目。

不要试图创建或编写自己的构建系统,因为“没有任何工具足够好”。所有现代构建系统都允许您编写插件来执行自定义内容。

1

大致顺序 - 最小/最先进的通过更复杂的

  • 抽到一组特定的源到任何机器
  • 能够构建源(没有问题)
  • 能(时间表)每个夜晚/或某个其他定义的时间段内构建,无需用户干预
  • 一个(或多个)专用构建服务器(不共享为qa或dev机器)
  • 能够在每次签入/提交
  • 通知构建状态有关方面构建
  • 随时
  • 作为构建的一部分创建安装
  • 部署/生活的能力,如果构建好提供构建状态后
  • 运行单元测试
  • 在产品
  • 报告运行测试,这些测试的结果
  • 静态代码分析和报告 ... 然后列表继续

不要害怕以批处理文件或shell脚本或其他临时方式开始。在CI狂热之前,人们做出了完美的软件。在哈德逊和克鲁斯控制之前有很多好的过程 - (我不是在敲那些或其他人 - 我使用哈德森等) - 但不要错过这一点 - 这些东西在这里帮助你 - 不会成为霸道的过程)

0

我们首先编写将在开发人员机器上运行的批处理脚本。一旦我们将所有流程自动化,我们将它们移动到构建服务器。

在工具方面,我们目前正在从巡航控制转移到TFS。

相关问题