Language agnostic 语言无关构建管理系统

Language agnostic 语言无关构建管理系统,language-agnostic,build,Language Agnostic,Build,在我的职业生涯中,我曾在一个软件团队工作过好几次,该团队决定 a) 我们需要一个构建/测试系统 b) 我们应该写自己的 c) 我们可以让一个开发者花一周的时间来完成它,他们不应该再碰它 每一次,这导致了一个系统,似乎只有工作的人写了它,并需要他们不断的关注。我已经花了好几次时间寻找一种工具,我可以抓住它来满足我们的需要,但是空手而归。一般来说,像这个服务器这样的工具市场非常狭窄。我又需要这样的东西了。有什么东西吗,还是我们再写一遍?以下是我的需求优先顺序(最后几项很好): 能够处理多项目构建。我

在我的职业生涯中,我曾在一个软件团队工作过好几次,该团队决定 a) 我们需要一个构建/测试系统
b) 我们应该写自己的
c) 我们可以让一个开发者花一周的时间来完成它,他们不应该再碰它

每一次,这导致了一个系统,似乎只有工作的人写了它,并需要他们不断的关注。我已经花了好几次时间寻找一种工具,我可以抓住它来满足我们的需要,但是空手而归。一般来说,像这个服务器这样的工具市场非常狭窄。我又需要这样的东西了。有什么东西吗,还是我们再写一遍?

以下是我的需求优先顺序(最后几项很好):

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

  • 不要担心事情到底是如何建立起来的。这听起来可能很奇怪,但我不希望构建系统担心编译我的代码。对于每种语言,已经有很多很好的工具可以做到这一点——Ant、CMake等等。我只想告诉它调用什么来构建东西,以及它应该关心什么输出。这样,项目A可以在java中,B项目可以在C++中,你就可以得到这个想法。
  • 有办法对输出运行测试吗

  • 在网页上显示当前生成/测试结果

  • 通过电子邮件发送结果

  • 与RCS集成(我们使用svn)

  • 阿帕奇和阿特拉斯将以2-6的比分相遇

    以语言不可知的方式做1有点难


    两者都适用于Java依赖项。

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

    我研究过,但从未使用过AntHill。有一个版本和一个版本。我认为它会做你想做的,但是如果你给出更多的需求,比如它是否需要做自动化的隔夜构建,你用什么来进行源代码控制,等等,它会很有帮助


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

    下面是一个简短的列表,其中列出了可与.NET和其他语言一起使用的工具:
    如果你打算编写一个测试系统,你会考虑使用它。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
    
    有关更多信息,请转到

    这些例子是从亚当那里抄来的

    我注意到了鹿群的反应,作为一个鹿群,我不得不说他是对的。Anthill做得很好的一件事是让您定义项目之间的依赖关系。开源版本以Java为中心,而商业工具则与语言无关,尽管名称不同

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

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

    干杯


    eric

    我认为您必须澄清为什么脚本和/或Ant、msbuild等东西不能满足要求。您似乎还表示希望将二进制文件存储在版本控制中,或者至少存储在生成服务器上。为什么不在ftp站点上公开生成机器的结果?使用标签/修订。