持续集成 – 在具有依赖性的Linux和Windows平台上同步CruiseControl项目

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

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

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

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

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

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

当然,有人必须在某个时候做到这一点吗?

解决方法

拥有Project A构建是直截了当的.在发布阶段,将文件写入网络驱动器.

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

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

一切都很简单.

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

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

通过评论中的问题,您可以获得关于项目B的信息(至少)两种不同的方式.

一种是将CC下的项目B作为远程项目B的代理.远程项目B将在发布阶段写入文件,并在文件中指示它是通过还是失败. proxy-B项目将监视该文件,并在其“构建”阶段读取文件并根据内容传递或失败. Project C现在只使用CC的BuildStatus元素监视proxy-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.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...