4

我有一个多平台应用程序集,其中一些应用程序在 Linux 上运行,一些在 Windows 上运行。我想完成以下构建:

服务器 L 运行带有项目 A 的 CruiseControl,这是一个仅限 Linux 的服务器应用程序。这应该首先建立。

如果项目 A 成功构建,它需要以某种方式启动......

项目 B,一个在服务器 W 上运行的纯 Windows 客户端应用程序,带有 CruiseControl.NET 项目 B 包括一些单元测试,这些单元测试具有在服务器数据库中生成一些数据的最终效果。项目 B 大约需要 10 分钟来构建和执行测试。

如果项目 B 构建成功,一直在耐心等待的服务器 L 将启动项目 C,其中包含一些测试用例,用于查找和验证项目 B 生成的数据库条目。

关于如何完成这项工作的任何想法?我找到了这个链接,但它似乎旨在在没有依赖关系的多个平台上构建相同的代码库。

当然,一定有人在某个时候这样做过?

4

2 回答 2

2

进行项目 A 构建是直截了当的。在发布阶段将文件写入网络驱动器。

项目 B 可以使用文件系统源代码控制块来监视网络文件系统,并根据项目 A 的更改触发构建。完成后,它将另一个文件写入文件系统(不同的目录)。

项目 C 正在使用文件系统源代码管理来监视项目 B 的更改。

一切都很简单。

如果您没有共享文件系统,您还可以使用 ftp、scp 或 http 来移动触发器文件。

如果您愿意,可以使用从项目 A 和项目 B 发布阶段调用的 Web 界面触发构建。


在评论中写下问题,您可以获得有关项目 B 失败(至少)两种不同方式的信息。

一种是在 CC 下有一个项目 B,作为远程​​项目 B 的代理。远程项目 B 将在发布阶段写入一个文件,并在文件中指示它是通过还是失败。proxy-B 项目将监视该文件,并在其“构建”阶段读取文件并根据内容通过或失败。项目 C 现在只使用 CC 的 BuildStatus 元素监视代理 B。

解决问题的另一种方法是将 CC.net 下的项目 B 替换为 CC 的 DistributedBuilder,它使用 JavaSpaces 将构建分发到远程代理:http ://confluence.public.thoughtworks.org/display/CC/Using+distrib+from +the+CruiseControl+contrib

在分布式方法中,项目 B 仍将在 Windows 机器上运行,但 DistributedBuilder 将远程运行脚本,然后将结果带回 CC 服务器。

于 2008-11-12T06:54:35.080 回答
0

你在混合 CruiseControl 和 CruiseControl.Net 吗?对于 CruiseControl.Net-only 设置,只需使用Project Trigger

于 2009-06-11T13:17:22.057 回答