【问题标题】:Best Way of Automating Daily Build自动化日常构建的最佳方式
【发布时间】:2010-09-08 09:36:54
【问题描述】:

好的,所以我们都知道日常构建是项目的核心,但是自动化它的最佳方式是什么?

我们有 perl 脚本来包装我们的管道,其中包括 ClearCase、VS2005 (C++)、Intel FORTRAN、Inno setup。我们在 UNIX 上使用 cron 作业来安排构建,并托管一个简单的 Apache Web 服务器来查看和监控构建。总而言之,它相当复杂,我想知道人们使用的最好的现成解决方案是什么?

是的,我确实说过 FORTRAN 有时不逃避它,它可以工作,没有必要为一些经过验证的 FEA 代码做一个巨大的重新实现项目。

【问题讨论】:

    标签: continuous-integration build


    【解决方案1】:

    我听说的一个新的很漂亮的是hudson - 也支持 MSBuild。

    【讨论】:

    • 我们在 C 开发环境中使用它,它真的很方便。虽然我不能对所描述的情况和哈德森说任何话,但它提供了“批量构建”,因此您可以在构建过程中执行命令。
    【解决方案2】:

    我们正在实施 CC.Net。到目前为止,它似乎非常适合您的模型。

    开箱即用,它提供自动化构建、结果跟踪和通知。不过,我不确定内置进程监控的详细程度。

    【讨论】:

    • 我玩过 CC.NET,我不得不做大量的源代码编辑,开发人员假设 ClearCase 插件上只有一个 VOB(源数据库)。
    【解决方案3】:

    有很多工具可以专门处理这个问题:

    这些工具对最常见的构建类型提供开箱即用的支持。它们还都支持某种“运行此脚本”类型的构建过程。

    最后,您应该尽可能使用更好的构建工具(MSBuild、Ant、Maven、Make,...),并使用自定义脚本填补更奇怪工具的空白。自动构建可以按正确的顺序调用这些。

    【讨论】:

      【解决方案4】:

      这是我们找到的帮助我们选择持续集成工具的最佳资源。我们一直在此页面上评估 5 或 6 个工具。

      http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

      【讨论】:

        【解决方案5】:

        我们使用TeamCity - 但它是一个简单的 C#/Java 开发 - 也许您的管道可以通过它可以驱动的脚本来完成?

        【讨论】:

          【解决方案6】:

          我已经成功使用Visual Build Pro

          【讨论】:

            【解决方案7】:

            CC.NET 非常强大。使用它并对此感到非常高兴。甚至系统托盘中的状态图标。这是一个小细节,但它可以让您很好地了解项目的“健康状况”。当您看到红色的测试时,您会立即感到有动力修复测试。

            现在我们使用自烘焙的一系列脚本。由于我们写的是 Python,编译是不存在的,所以唯一的问题是运行测试。

            【讨论】:

              【解决方案8】:

              如果您使用的是 Visual Studio,请务必查看 Team Foundation Build 以了解它是否适​​合您的情况。

              看来 Buck Hodges 的 blog post on the VS 2008 version 也是一个很好的资源。

              【讨论】:

                【解决方案9】:

                我知道这是一个非常古老的问题,但它仍在搜索中,所以有人应该提到 Jenkins - Hudson 的开源延续。

                来自Jenkins wiki

                其中,当前的 Jenkins 专注于以下两个工作:

                • 持续构建/测试软件项目,就像 CruiseControl 或 DamageControl。简而言之,Jenkins 提供了一个易于使用的所谓持续集成系统,使开发人员更容易将更改集成到项目中,并使用户更容易获得全新的构建。自动化、持续的构建提高了生产力。
                • 监控外部运行作业的执行,例如 cron 作业和 procmail 作业,甚至那些在远程计算机上运行的作业。例如,使用 cron,您收到的只是捕获输出的常规电子邮件,您需要仔细查看它们并注意它何时损坏。 Jenkins 会保留这些输出,以便您在出现问题时轻松发现。

                它最初是用 Java 构建的,因此它可以很好地与许多其他 Java 工具集成,但您可以将它与任何语言一起使用,包括 OP 提到的所有语言。

                【讨论】:

                  猜你喜欢
                  • 2012-09-23
                  • 2018-07-31
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-10-18
                  • 2019-04-21
                  • 2023-03-04
                  • 1970-01-01
                  • 2022-09-23
                  相关资源
                  最近更新 更多