【问题标题】:Cruise Control .NET two project same working directoryCruise Control .NET 两个项目相同的工作目录
【发布时间】:2014-10-28 04:22:24
【问题描述】:

在项目块的 ccnet wiki 中,workingDirectory 我读到:“确保此文件夹在每个项目中都是唯一的,以防止构建出现问题。”我想做两个具有相同工作目录的项目......可能发生的“构建问题”是什么,我该如何克服这些问题?

编辑: 我的情况:我在同一个主干中有两个应用程序,它们有一些通用代码,但是如果我提交了其中一个应用程序,我不希望另一个应用程序构建并增加其版本号,但是如果我对通用代码进行了更改代码我希望它们都触发构建。我的源代码控制是 SVN,我使用 Filtered block 仅包含我想要触发构建的文件。

【问题讨论】:

    标签: continuous-integration cruisecontrol.net


    【解决方案1】:

    选项 1

    拥有一个仅构建通用代码的项目。这应该将其构建的程序集发送到已知位置其工作目录之外

    有 2 个其他项目来构建解决方案的其他部分。每个只监听对其特定源代码控制路径的更改。每个项目都可以从已知位置

    合并/引用构建的程序集

    可以使用forceBuildPublisher 从公共项目中强制执行其他 2 个项目。

    这些项目应该在相同的队列中,以防止公共项目重写已构建的公共程序集,而它试图被其他 2 个项目引用。

    选项 2

    有 2 个单独的项目,它们同时构建公共源代码和特定代码。比如说构建一个包含两组项目的解决方案文件。

    这是一个更简单的选项,但确实会让您失去拥有“通用程序集版本号”的简洁性

    优点和缺点

    选项 1

    1. 每个版本的通用代码都有一个版本号。
    2. 由于额外的复杂性,它更容易出现问题。
    3. 您需要在工作目录之外维护一个已知位置,这样它就不会被构建过程删除/清理。

    选项 2

    1. 更简单的解决方案。
    2. 公共代码版本在依赖程序集的版本中丢失。

    如果我必须建议一个,我会选择选项 2,纯粹是因为它的简单性减少了其他问题的可能性。

    【讨论】:

      【解决方案2】:

      工作目录是 Cruise Control 放置项目源代码的地方,这也是构建过程发生的地方。如果你将两个项目指向同一个工作目录,你可能会遇到任何你能猜到的冲突。项目 A 和项目 B 的源文件可能会混淆,构建过程可能会因为构建文件夹的未知状态等而中断。

      将不相关的事物分开是很自然的,在这种情况下,这是一种常识。此外,我很难想象必须将两个项目放在同一个工作目录中的情况。

      【讨论】:

      • 我的情况:我在同一个主干中有两个应用程序,它们有一些共同的代码,但是如果我提交其中一个应用程序,我不希望另一个应用程序构建并增加其版本号,但是如果我对公共代码进行了更改,我希望它们都触发构建...
      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      相关资源
      最近更新 更多