Cruise Control .NET两个项目相同的工作目录

时间:2014-10-23 12:44:45

标签: continuous-integration cruisecontrol.net

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

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

2 个答案:

答案 0 :(得分:1)

选项1

只有一个项目可以构建公共代码。这应该将其构建的程序集发送到已知位置 在其工作目录之外。

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

合并/引用构建的程序集

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

这些项目应该在相同的队列中,以防止公共项目重写构建的公共程序集,并尝试通过其他2个项目进行引用。

选项2

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

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

优点和缺点

选项1

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

    1. 更简单的解决方案。
    2. 通用代码版本在依赖程序集的版本中丢失。
    3. 如果我不得不建议,我会选择选项2,纯粹是因为它的简单性降低了其他问题的可能性。

答案 1 :(得分:0)

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

分离不相关的东西是很自然的,在这种情况下,这是一种常识性的呼唤。此外,我很难想象你必须将2个项目放入同一个工作目录的情况。