6

在我的职业生涯中,我曾在一个软件团队工作过几次,该团队确定

a)我们需要一个构建/测试系统
b)我们应该编写自己的
c)我们可以让开发人员花一周时间完成它,他们应该不必再碰它

每次,这都会导致一个系统似乎只对编写它的人有效,并且需要他们不断关注。我曾多次花时间寻找可以满足我们需求的工具,但空手而归。一般来说,像这种服务器这样的工具市场非常狭窄。我又需要这样的东西了。那里有什么东西,还是我们再写一次?

以下是我的优先级要求(最后几个很好):

  1. 能够处理多项目构建。我们有几个组件,它们既提供其他组件使用的东西,也使用其他组件的东西。开发人员应该能够签出 1 个组件并进行更改,而无需构建世界。项目外部的依赖项应该自动引入。因此,某种能够将构建的对象推送和拉取到服务器的方法对此至关重要。另一个方面是能够将所有依赖项下拉到本地目录以便在路上进行开发。

  2. 不要担心事情是如何构建的。这可能听起来很奇怪,但我不希望构建系统担心编译我的代码。已经有很好的工具可以为每种语言执行此操作——Ant、CMake 等。我只想告诉它调用什么来构建东西,以及它应该关心什么输出。这样,项目 A 可以是 Java,项目 B 可以是 C++,你明白了。

  3. 有一些方法可以在输出上运行测试

  4. 在网页上显示当前的构建/测试结果

  5. 通过电子邮件发送结果

  6. 与 RCS 集成(我们使用 svn)

4

6 回答 6

1

Apache 的Continuum和 Atlassian 的Bamboo将遇到 #2-6。

以与语言无关的方式执行 #1 有点困难。

MavenIvy都适用于 Java 依赖项。

于 2008-11-14T20:39:06.047 回答
1

我使用了Visual Build,我发现它是一种非常有用的方法,可以将所有这些不同的编译器、测试运行器和其他东西结合到一个灵活的系统中。想想主要类固醇上的 Windows 调度程序。它基本上是一个大型任务执行引擎,包含所有主要商业源代码控制系统、编译器等的现成任务。它可以通过一个相当简单的用户界面创建文件夹、发送电子邮件和许多其他事情。

于 2008-11-14T20:39:47.137 回答
1

我研究过但从未使用过 AntHill。有开源版和商业版。我认为它会做你想做的事,但如果你给出更多的要求会很有帮助,比如它是否需要做自动化的隔夜构建,你用于源代码控制的东西等等。

在我现在的公司,我自己写。我的工作方式正是你所说的;它不知道如何构建软件。你给它一堆命令行来运行(存储在数据库中),它捕获退出值以及标准输出和标准错误,如果退出值非零,它会将构建标记为损坏。我们有大约 8 个项目可以构建和运行单元测试。所有这些都是从擦除目录并从颠覆中获取源代码开始的。

于 2008-11-14T20:53:22.243 回答
1

亚当,

我注意到蚁丘的反应,作为蚁丘,我不得不说他是对的。Anthill 做得很好的一件事是让您定义项目之间的依赖关系。开源版本专注于 Java,而商业工具与语言无关,尽管名称如此。

它将允许您根据状态(最新成功构建,或 QA 批准的最新构建或......)和/或内部版本号或分支等标准定义项目(或项目的一部分)之间的依赖关系。这是我们非常自豪的事情。在构建时,构建工件在服务器之间穿梭,缓存被保留以提高性能,以及所有这些好东西。

至于其他标准:
2) Anthill(像大多数构建自动化工具一样)将运行您现有的构建脚本,通常无需修改。
3) 测试(同样是您现有的技术)可以在构建时运行,或者针对现有构建运行。
4) 结果显示在网络上(同样是构建自动化工具的典型特征)
5) 电子邮件很容易
6) 我们有几十个 SCM 集成,并且在内部使用 SVN,因此集成自然是我们最好的之一。

干杯,

埃里克

于 2008-11-18T15:29:59.710 回答
0

以下是适用于 .NET 和其他语言的工具的简短列表: 自动构建工具

于 2008-11-14T21:11:53.033 回答
0

如果您要编写一个测试系统,我建议您考虑使用Test Anything Protocol。TAP 已经使用了 20 多年,并且被广泛使用,尤其是对于 CPAN 模块。

TAP 的一般格式是:

1..N
ok 1 Description # Directive
# Diagnostic
....
ok 47 Description
ok 48 Description
more tests....

例如,测试文件的输出可能如下所示:

1..4
ok 1 - Input file opened
not ok 2 - First line of the input valid
ok 3 - Read the rest of the file
not ok 4 - Summarized correctly # TODO Not written yet

获取更多信息,请访问testanything.org

示例从http://en.wikipedia.org/wiki/Test_Anything_Protocol复制

于 2008-11-15T18:27:56.327 回答