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

发布于 2024-07-08 22:37:47 字数 587 浏览 9 评论 0原文

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

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

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

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

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

关于如何完成此任务,您有什么想法吗? 我找到了 此链接,但它似乎旨在构建相同的代码基于多个平台,无依赖性。

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

I have a multiple platform application set, with some applications running on Linux and some on Windows. I want to accomplish the following build:

Server L runs CruiseControl with Project A, a Linux-only server application. This should build first.

If Project A builds successfully, it needs to somehow kick off...

Project B, a Windows-only client application running on Server W, with CruiseControl.NET Project B includes some Unit tests that have the end effect of generating some data in the server database. Project B takes about 10 minutes to build and execute the tests.

If Project B builds successfully, Server L, which has been waiting patiently, kicks off Project C, which contains some test cases that look for and validate the database entries that were generated by Project B.

Any ideas on how I can get this done? I found this link, but it seems to be aimed at building the same code base on multiple platforms without dependencies.

Surely, someone must have done this at some point?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

℡Ms空城旧梦 2024-07-15 22:37:47

构建 Project 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 服务器。

Having Project A build is straight forward. In the publishing phase write a file to a network drive.

Project B can use the files system source control block to monitor the network file system, and trigger a build based on the change from Project A. When it is done it writes another file to the file system (different dir).

Project C is using the file system source control to watch for changes from Project B.

All pretty simple.

If you don't have a shared file system you can also use ftp, scp, or http to move trigger files around.

If you prefer you can trigger a build using the web interfaces, called from the Project A and Project B publishing phases.


Wrt the questions in the comments, you can get information on Project B failing (at least) two different ways.

One would be to have a Project B under CC that served as a proxy for the remote Project B. The remote Project B would write a file during the publishing phase and in the file indicate if it passed or failed. The proxy-B project would monitor that file and during its "build" phase would read the file and pass or fail based on the contents. Project C now just monitors proxy-B using CC's BuildStatus element.

Another way to approach the problem would be to replace Project B under CC.net with CC's DistributedBuilder which uses JavaSpaces to distribute builds to remote agents: http://confluence.public.thoughtworks.org/display/CC/Using+distrib+from+the+CruiseControl+contrib

In the distributed approach Project B would still be run on the windows machine but the DistributedBuilder would run the script remotely and then bring the results back to the CC server.

花伊自在美 2024-07-15 22:37:47

您是否混合使用 CruiseControl 和 CruiseControl.Net? 对于仅限 CruiseControl.Net 的设置,只需使用 项目触发器

Are you mixing CruiseControl and CruiseControl.Net? For CruiseControl.Net-only setup, just use Project Trigger.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文