Continuous integration 巡航控制.NET两个项目相同的工作目录

Continuous integration 巡航控制.NET两个项目相同的工作目录,continuous-integration,cruisecontrol.net,Continuous Integration,Cruisecontrol.net,在项目块的ccnet wiki中,workingDirectory我读到:“确保每个项目的此文件夹是唯一的,以防止生成问题。”我想做两个具有相同工作目录的项目。。。可能出现的“构建问题”是什么?我如何克服这些问题 编辑: 我的情况:我在同一个主干中有两个应用程序,它们有一些共同的代码,但如果我对其中一个应用程序进行了提交,我不希望另一个应用程序生成并增加其版本号,但如果我对共同的代码进行了更改,我希望它们都触发生成。我的源代码管理是SVN,我只包含我想要触发构建的文件。工作目录是Cruise c

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

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

工作目录是Cruise control将项目源代码放在其中的地方,这也是构建过程发生的地方。如果将两个项目指向同一个工作目录,则可能会出现任何类型的冲突。项目A和项目B的源文件可能会混淆,生成过程可能会因为生成文件夹的未知状态而中断,等等


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

选项1

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

有两个其他项目构建解决方案的其他部分。每个只侦听对其特定源代码管理路径的更改。每个项目都可以从已知位置合并/引用生成的部件

可以使用
forceBuildPublisher
从公共项目强制执行另外两个项目

这些项目应该在同一队列中,以防止公共项目重写生成的公共程序集,而不是试图被其他两个项目引用

选项2

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

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

优点和缺点

选择1

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

  • 更简单的解决方案
  • 从属程序集版本中的通用代码版本丢失

  • 如果我必须提出一个建议,我会选择选项2,纯粹是因为它的简单性降低了发生其他问题的可能性。

    我的情况:我在同一个主干中有两个应用程序,它们有一些共同的代码,但如果我对其中一个应用程序进行了提交,我不希望另一个应用程序生成并增加其版本号,但如果我对共同的代码进行了更改,我希望它们都触发一个错误建造。。。