连续构建服务器(cc.net,hudson,bamboo等)的远程构建经验?


9

当前,我们在构建过程中使用一次cc.net服务器,该服务器同时构建.net(使用msbuild和nant)和java(使用maven和ant)。

CC.net监视源代码控制,并触发在单独服务器上运行的远程版本。CC.net然后整理结果。

当我们运行远程版本时,通常:

  • 使用模拟数据运行nunit或junit或类似数据
  • (可选)运行数据库脚本来创建新的数据库实例或从已知位置还原数据库。
  • 运行硒或类似的东西来测试UI
  • 运行emma或ncover进行代码覆盖
  • 为各种部署环境(测试,验收,生产)构建系统

我们可能一次运行多个构建,一些.net和一些Java(来自不同的项目团队)。

设置新项目时,要使远程版本正常工作是很耗时的,并且我们认为必须有比cc.net更适合远程版本的内容。

有没有人对持续集成系统的远程构建有任何经验?
我真的不想要CI服务器的功能列表,如果您了解如何在多语言,多服务器环境中使用它们,我将不胜感激。

Answers:


8

哈德逊(更新:在当今世界,我将使用哈德逊的叉子詹金斯(Jenkins)。)

我在Java和.NET企业环境中都使用hudson进行高可见性项目(您可能去过某些站点)。Hudson从一开始就很扎实,但是最好的部分是,有很多插件可以完成您想要的任何事情。Hudson具有高度的可配置性,拥有一个强大的社区,并且如果您需要同时进行多个构建,那么在集群环境中设置起来非常容易。这是我使用过的所有服务器(CC.NET,Hudson和TFS)中最喜欢的CI服务器。

另外,您可以使用ChuckNorris插件让他给您竖起大拇指。


1
如果您不做任何异国情调的话,Hudson是一个不错的选择,但是到了最后,如果您无法按批处理脚本做您想做的事情,Hudson也不太可能做得很好。
比尔

哈德逊已经加入了詹金斯和甲骨文哈德森。想要分享使用哪一个?

1
@Thorbjørn:我是詹金斯亲。有几个原因,但对我而言,杀手one是詹金斯正在取得更加积极的发展-很大程度上是因为哈德逊背后的主要人物川口昌介在詹金斯阵营中。看来他觉得詹金斯是他开始的项目的真正延续。哦,最后,Jenkins的徽标不是Microsoft剪贴画!
Tom Anderson

@Thorbjørn-我同意汤姆。我已经大约一年没有使用Hudson了(目前使用TFS),但这是我听到的普遍共识,那就是Jenkins是未来的发展之路。再说一次,因为它们是分叉的,所以我也没有用过,但是如果我不得不再次捡起它,我可能会走詹金斯路线。
Ryan Hayes

7

不久前我们面对这个问题,因此决定选择TeamCity。我们只看了哈德森,CC和TeamCity。选择起来很容易-TeamCity最终成为了我们的构建服务器。请注意,我不是专业人士,这是我当时第一次使用构建服务器。

哈德森 -我不知道该怎么做以及在哪里读。即使我能理解某些内容,但它也不是一种选择-太多的工作。我决定看一下CC。

巡航控制 -与哈德逊相同,但方式略有不同。没有Google的手册和大量帮助,那里绝对是一无所知。我只是继续看一下TC。

TeamCity-在前两个之后,TeamCity就像天堂一样。这是这三个中最可用的。安装,转到管理面板,配置项目(显示SVN所在的位置,指向构建文件,指定覆盖率/单元测试等),然后开始使用。即使我不能说我没有使用Google进行搜索,但仍然有95%的设置过程非常简单明了。我强烈推荐此工具。去看看吧。它将为您节省很多时间和精力:)

我还要注意,TC不是免费的。尽管它们确实有一个免费版本,可以在商业项目中使用它有一些限制(最大构建配置为20),但请查看其定价页面。

PS我听起来好像我在TC工作,但是我真的不:)


3

我们使用CC.NET 1.4。

我们正试图升级到1.6 ...真是一场噩梦。

它功能强大...但是只有当您正确使用它并了解所有内容如何组合在一起时,才可以。整个团队要问的很多。我们拥有“ buildmasters”,他们可以访问服务器并可以更改配置。即便如此,关于ccnet的信息还是存在很多谷歌搜索,整个业务已经变得一团糟。

我个人想搬到TeamCity。

我建议您不要使用ccnet。


1

好问题。我们目前还在尝试找出最适合我们的工具。因此,我只能告诉您一些经验。但是我们会对您现在选择哪种CI系统以及出于何种原因感到非常感兴趣。因此,请及时通知我们。

我对您的CI水平有很高的印象。我不得不承认,我们的需求较少,因为我们还没有运行UI测试,也没有创建数据库实例或类似的实例,我们只是在单元测试中使用了模拟。

从现在到现在的经验:

对于Java项目,我们使用Bamboo,可以在JUnit和Emma上正常工作。而且,建立新项目的工作量并不大。

对于.NET项目,我们仍在寻找最佳解决方案

  • 巡航控制:由于与存储库的连接问题,我们无法使其运行

  • TFS:

    a)要执行第一个构建,必须执行一些设置步骤。

    b)关于访问权限,您必须克服一些陷阱。您可以定义许多角色,并且您必须确切知道哪些权限具有构建过程以及哪些权限具有个人登录帐户。但是,如果您有足够的时间来管理,则可以定义所需的每个特定粒度。

    c)关于引用的库,如果您想为许多项目共享库,并且不想在每个项目中都处理它们,则还有一些事情要管理

    d)运行NUnit测试并不像我们想象的那么容易。仅当您使用Visual Studio提供的测试执行时这很容易,但这不是NUnit

    e)我们还没有尝试运行NCover(首先是第一件事:-)

  • 哈德森:我们将尝试的下一个工具。似乎有一个非常简单易用的.NET插件,我会让您知道它是如何工作的

  • Bamboo:我们得到的第一个预测是:“ Java太具体了”。但是,也许我们还是可以尝试.NET插件,我会让您知道

希望我们可以继续进行这次讨论和交流经验。

安迪

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.