Continuous integration 通过依赖项跨Linux和Windows平台同步CruiseControl项目

Continuous integration 通过依赖项跨Linux和Windows平台同步CruiseControl项目,continuous-integration,build-automation,cruisecontrol.net,cruisecontrol,Continuous Integration,Build Automation,Cruisecontrol.net,Cruisecontrol,我有一个多平台应用程序集,一些应用程序在Linux上运行,一些在Windows上运行。我希望完成以下构建: 服务器L使用项目A运行CruiseControl,项目A是一个仅限Linux的服务器应用程序。这应该首先构建 如果项目A成功构建,它需要以某种方式启动 Project B是一个仅在服务器W上运行的Windows客户端应用程序,它与CruiseControl.NET Project B一起包含一些单元测试,这些单元测试的最终效果是在服务器数据库中生成一些数据。项目B大约需要10分钟来构建和执

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

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

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

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

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

有什么办法可以帮我完成吗?我发现了,但它的目标似乎是在多个平台上构建相同的代码库,而无需依赖


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

创建项目是很简单的。在发布阶段,将文件写入网络驱动器

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

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

都很简单

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

如果愿意,可以使用web界面触发构建,该界面在项目a和项目B发布阶段调用


根据评论中的问题,您可以通过两种不同的方式获得项目B失败的信息

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

解决此问题的另一种方法是用CC的DistributedBuilder替换CC.net下的项目B,后者使用JavaSpaces将构建分发给远程代理:


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

您是否混合使用CruiseControl和CruiseControl.Net?对于仅限于CruiseControl.Net的设置,只需使用。

。。。但是有没有一种方法可以传达构建失败?如果项目B失败了,我想把失败也传达回来。Kevin,因为每个构建都是一个单独的项目配置。B会像C一样报告自己的失败。在我的回答中添加了关于如何将项目B的状态返回到CC机器的信息。