【发布时间】:2009-06-12 19:21:29
【问题描述】:
在我们的 .NET 软件开发商店中,我们设置了 CruiseControl.NET 来构建 28 个项目,其中一些是相互依赖的。每个项目大致代表一个与单元测试配对的 Visual Studio 项目或 Flex 库。令我恼火的是,我还没有找到一种好的方法来确保项目按照表示依赖项的顺序构建。
这是我正在做的事情:
- 一切都在同一个构建队列中。我这样做是为了按顺序完成构建,这样我就可以避免需要多个工作目录。
- 我为项目设置了队列优先级,我认为这会影响它们的构建顺序。但仔细阅读文档后,我发现它只是在队列中有多个构建请求时控制优先级。
- 除了使用间隔触发器启动构建之外,我还使用项目触发器,以便在成功构建依赖项时,它们的依赖项也会构建。
在某种程度上,这种设置是有效的。主要问题是,如果有人对项目 A 和项目 B 中的代码进行了更改,其中项目 B 依赖于项目 A。有时,项目 B 会在项目 A 之前构建。因为项目 A 尚未构建,所以这可以有时会导致项目 B 中断。这是暂时的,因为间隔触发器会导致项目 A 稍后构建,并且其成功构建会触发项目 B 重新构建并得到修复。我要避免的是在项目 A 之前构建项目 B,这样就不会发生中间损坏。
您使用哪些实践来正确管理 CruiseControl.NET 服务器上的相互依赖关系?在这一点上,我不愿意换成像 TeamCity 这样的非免费持续集成包。
【问题讨论】:
标签: .net continuous-integration cruisecontrol.net