设置集成服务器时,我对使用多个任务完成构建的最佳方法存有疑问。最好的方法是将所有工作集中在一项大工作上,还是只做一些小的依赖工作?

有帮助吗?

解决方案

你肯定想分解任务。这是 CruiseControl.NET 配置的一个很好的示例,每个步骤都有不同的目标(任务)。它还使用 common.build 文件,该文件可以在几乎不需要定制的项目之间共享。

http://code.google.com/p/dot-net-reference-app/source/browse/#svn/trunk

其他提示

我将 TeamCity 与 nant 构建脚本一起使用。TeamCity 可以轻松设置 CI 服务器部分,而 nant 构建脚本可以轻松执行报告生成方面的许多任务。

这是我写的一篇关于在 CruiseControl.NET 中使用 CI 的文章,它的注释中有一个 nant 构建脚本,可以跨项目重复使用:

与 CruiseControl 持续集成

我喜欢的方法是以下设置(实际上假设您在 .NET 项目中):

  • CruiseControl.NET。
  • 每个单独步骤的 NANT 任务。Nant.Contrib 用于替代 CC 模板。
  • NUnit 运行单元测试。
  • Ncover 执行代码覆盖。
  • FXCop 用于静态分析报告。
  • 颠覆源代码控制。
  • 所有开发盒上的 CCTray 或类似工具,用于获取构建和失败等通知。

在许多项目中,您会发现当有人签到时会发生不同级别的测试和活动。有时,这些时间可能会增加到开发人员在构建后很长时间才能看到他们是否通过签入破坏了构建的程度。

在这些情况下我所做的是创建三个构建(或者可能是两个):

  • CI 构建由签入触发,并执行干净的 SVN 获取、构建并运行轻量级测试。理想情况下,您可以将其控制在几分钟或更短的时间内。
  • 更全面的构建可能每小时一次(如果发生变化),其作用与 CI 相同,但运行更全面且耗时的测试。
  • 隔夜构建完成所有操作,还运行程序集的代码覆盖率和静态分析,并运行任何部署步骤来构建每日 MSI 包等。

任何 CI 系统的关键在于它需要是有机的并不断调整。CruiseControl.NET 有一些很棒的扩展,可以记录和绘制步骤的构建时间等,并让您进行历史分析,从而允许您不断调整构建以保持敏捷。经理们很难接受,一个构建箱可能会让你忙上五分之一的工作时间,只是为了阻止它慢慢停止。

我们用 构建机器人, ,将构建分解为离散的步骤。在以足够的粒度分解构建步骤和成为一个完整的单元之间需要找到平衡。

例如,在我目前的职位上,我们在各自的平台上为每个平台(Mac、Linux、Windows)构建子部分。然后,我们有一个步骤(带有几个子步骤)将它们编译成最终版本,最终出现在最终发行版中。

如果这些步骤中的任何一个出现问题,都很容易诊断。

我的建议是用尽可能模糊的术语将步骤写在白板上,然后以此为基础制定步骤。就我而言,那就是:

  1. 构建插件片段
    1. 为 Mac 编译
    2. 为 PC 编译
    3. 为 Linux 编译
  2. 制作最终插件
  3. 运行插件测试
  4. 构建中间 IDE(我们必须引导构建)
  5. 构建最终的 IDE
  6. 运行 IDE 测试

我肯定会分解工作。您很可能会在构建中进行更改,如果您的任务较小,而不是搜索一个整体构建,那么跟踪问题会更容易。

无论如何,你应该能够从小事中创造出一项大工作。

你好,

当您谈论集成测试时,我的重要(明显)技巧是使测试服务器的构建和配置尽可能接近部署环境。

</thebloodyobvious> (-:

欢呼,罗布

将您的任务分解为离散的目标/操作,然后使用更高级别的脚本将它们适当地连接在一起。

这使得您的构建过程更容易被其他人理解(您在进行过程中进行记录,以便团队中的任何人都可以拿起它,对吧?),并增加重用的潜力。您可能不会重用高级脚本(尽管如果您有类似的项目,这可能是可能的),但您绝对可以相当轻松地重用(即使是复制/粘贴)离散操作。

考虑从存储库获取最新源的示例。您需要将用于检索代码的任务/操作与一些日志记录语句进行分组,并引用适当的帐户信息。这是一种很容易从一个项目到下一个项目重用的东西。

对于我团队的环境,我们使用 NAnt,因为它在开发机器(我们编写/调试脚本的地方)和 CI 服务器(因为我们只是在干净的环境中执行相同的脚本)之间提供了一个通用的脚本环境。我们使用 Jenkins 来管理我们的构建,但每个项目的核心只是调用相同的 NAnt 脚本,然后我们操纵结果(即归档构建输出、标记失败的测试等)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top