使用依赖项在Linux和Windows平台上同步CruiseControl项目

时间:2008-11-12 04:53:46

标签: continuous-integration build-automation cruisecontrol.net cruisecontrol

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

服务器L使用Project A(仅限Linux的服务器应用程序)运行CruiseControl。这应该先建立。

如果项目A成功建立,它需要以某种方式开始......

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

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

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

当然,有人必须在某个时候这样做过吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

一切都很简单。

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

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


在评论中提出问题,您可以通过两种不同的方式获取有关项目B失败的信息。

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

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

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

答案 1 :(得分:0)

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