Continuous integration 持续集成-最佳实践

Continuous integration 持续集成-最佳实践,continuous-integration,build-automation,Continuous Integration,Build Automation,我最近一直在思考CI和自动构建,我很想知道是否有任何用于设置和维护持续集成环境的最佳实践。是否将所有CI相关文件与项目源一起签入?您通常如何构造CI和生成文件?欢迎任何提示 如果你还没有,一定要看看杜瓦尔/马提亚斯/格洛弗的马丁·福勒系列丛书。它用坚实的例子深入地涵盖了你提出的所有问题。还有实用系列 当然,必须签入生成所需的所有文件。否则CI会怎么对付他们 我在Java中使用了CI,这意味着一个Ant build.xml和巡航控制、团队城市或Hudson。如果您坚持项目的一致目录结构,build

我最近一直在思考CI和自动构建,我很想知道是否有任何用于设置和维护持续集成环境的最佳实践。是否将所有CI相关文件与项目源一起签入?您通常如何构造CI和生成文件?欢迎任何提示

如果你还没有,一定要看看杜瓦尔/马提亚斯/格洛弗的马丁·福勒系列丛书。它用坚实的例子深入地涵盖了你提出的所有问题。

还有实用系列

当然,必须签入生成所需的所有文件。否则CI会怎么对付他们


我在Java中使用了CI,这意味着一个Ant build.xml和巡航控制、团队城市或Hudson。如果您坚持项目的一致目录结构,build.xml可能是通用的。

如果您的构建脚本开始变大,您可以将其拆分并包含相关部分。这使得维护和可读性更好

我的另一个建议与传统编程不同——在生成脚本时,使用大量的注释

  • 从一步构建开始。如果你没有这一点,你就不可能有任何合理的CI
  • 如果它不在源代码管理中,它就不存在
  • 如果设置和维护CI超出了设置开发人员工作站的工作量,那么您过度依赖IDE,或者项目结构过于复杂。把它当作一个重构机会。<李>
  • 你不需要任何花哨的东西来做CI。你甚至不需要知道怎么做。我写过,在我听说词CI之前,我实现了一个幼稚的CI
    广受欢迎的Jenkins/Hudson CI工具的创始人川口康介(Kohsuke Kawaguchi)刚刚发表了一份白皮书,你可能会觉得这很有帮助。

    分配CI内容与平台无关,但问题中的“如何构建CI和构建文件”部分可能会受到平台的影响。你愿意分享你的平台吗?我生活在一个.NET/Windows环境中。目前,我们正在使用Cruise Control.NET、MSBuild和NAnt进行builds.Yep。您需要在构建服务器上安装一些东西,但目标是将所有与CI相关的文件置于源代码管理之下(并让CI服务器从中提取文件)。我们使用TeamCity进行C#开发。如果生成变得复杂,我们使用NAnt(它也可以调用MSBuild)。