语言不可知构建管理系统

时间:2008-11-14 20:15:20

标签: language-agnostic build

在我的职业生涯中,我曾多次在一个软件小组工作,确定了这一点 a)我们需要一个构建/测试系统
b)我们应该写自己的 c)我们可以让开发人员花一周时间,完成它,而不必再触摸它

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

这是我的优先顺序要求(最后几个很好):

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

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

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

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

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

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

6 个答案:

答案 0 :(得分:1)

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

以语言无关的方式做#1有点困难。

MavenIvy都适用于Java依赖项。

答案 1 :(得分:1)

我使用了Visual Build,我发现这是将所有这些不同的编译器,测试运行器和其他东西组合成一个灵活系统的非常有用的方法。在主要的steriods上思考Windows Scheduler。它基本上是一个大任务执行引擎,包括所有主要商业源控制系统,编译器等的现成任务。它可以通过相当简单的用户界面创建文件夹,发送电子邮件和其他一些东西。

答案 2 :(得分:1)

我研究过,但从未使用过AntHill。有一个open source版本和一个commercial version。我认为它会做你想要的,但如果你提出更多要求会有所帮助,例如它需要做自动夜间构建,你用于源代码控制等等。

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

答案 3 :(得分:1)

亚当,

我注意到了蚁丘的反应,作为一名将军,我不得不说他是对的。 Anthill真正做得很好的事情之一就是让你定义项目之间的依赖关系。开源版本以Java为重点,而商业工具尽管名称与语言无关。

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

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

欢呼声,

埃里克

答案 4 :(得分:0)

以下是使用.NET和其他语言的工具的简短列表: Automated Build Tools

答案 5 :(得分: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

复制的