我有一个多平台应用程序集,一些应用程序在Linux上运行,另一些在Windows上运行。我想要完成以下构建:
服务器L与项目A一起运行CruiseControl,这是一个仅用于Linux的服务器应用程序。这应该首先构建。
如果项目A成功构建,它需要以某种方式启动...
项目B是一个运行在服务器W上的纯Windows客户端应用程序,带有CruiseControl.NET项目B,它包括一些单元测试,其最终效果是在服务器数据库中生成一些数据。项目B大约需要10分钟来构建和执行测试。
如果项目B成功构建,则一直在耐心等待的服务器L将启动项目C,其中包含一些用于查找和验证项目B生成的数据库条目的测试用例。
你有什么建议吗?我该怎么做?我发现了this link,但它的目标似乎是在多个平台上构建相同的代码库,而不是依赖。
当然,一定有人在某个时候做过这样的事情?
发布于 2008-11-12 06:54:35
让项目A构建是很简单的。在发布阶段,将文件写入网络驱动器。
项目B可以使用文件系统源代码控制块来监控网络文件系统,并基于项目A的更改触发构建。完成后,它会将另一个文件写入文件系统(不同的目录)。
项目C正在使用文件系统源代码控制来监视项目B的更改。
一切都很简单。
如果没有共享文件系统,还可以使用ftp、scp或http来移动触发器文件。
如果您愿意,可以使用web接口触发构建,从项目A和项目B发布阶段调用。
Wrt评论中的问题,您可以通过两种不同的方式获取有关项目B失败(至少)的信息。
一种是在CC下有一个项目B,作为远程项目B的代理。远程项目B将在发布阶段写入一个文件,并在文件中指出它是通过还是失败。proxy-B项目将监视该文件,并在其“构建”阶段读取该文件,并根据内容通过或失败。项目C现在只使用CC的BuildStatus元素监控proxy-B。
解决这个问题的另一种方法是将CC.net下的项目B替换为CC的DistributedBuilder,后者使用JavaSpaces将构建分发到远程代理:http://confluence.public.thoughtworks.org/display/CC/Using+distrib+from+the+CruiseControl+contrib
在分布式方法中,项目B仍然在windows机器上运行,但是DistributedBuilder将远程运行脚本,然后将结果带回CC服务器。
发布于 2009-06-11 13:17:22
你是在混用CruiseControl和CruiseControl.Net吗?对于只有CruiseControl.Net的设置,只需使用Project Trigger即可。
https://stackoverflow.com/questions/283084
复制相似问题