Syncing CruiseControl projects on Linux and Windows with dependencies

I have a set of applications with several platforms, and some applications work on Linux, and some on Windows. I want to do the following assembly:

Server L launches CruiseControl with Project A, a Linux-only server application. It must be built first.

If project A is successfully completed, he needs to start somehow ...

Project B, a Windows-only client application running on server W, with CruiseControl.NET Project B includes some unit tests that have the final effect of generating some data in the server database. Project B takes about 10 minutes to create and run tests.

If Project B runs successfully, server L, which is waiting patiently, starts Project C, which contains some test cases that look for and validate the database records that were generated by Project B.

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

Of course, someone had to do this at some point?

+4
source share
2 answers

The presence of the Project A assembly is straightforward. At the publishing stage, write the file to a network drive.

Project B can use the file system source control block to monitor the network file system and run the build based on the change from project A. When this is done, it writes another file to the file system (another directory).

Project C uses the file system control to view changes from project B.

Everything is pretty simple.

If you do not have a common file system, you can also use ftp, scp, or http to move trigger files.

If you prefer, you can initiate the build using the web interfaces invoked during the publishing steps of Project A and Project B.


By answering questions you can get information that Project B does not work (at least) in two different ways.

One could have project B under CC, which served as a proxy for remote project B. Remote project B recorded the file during the publishing phase, and indicated in the file whether it passed or failed. The proxy-B project will control this file, and during the โ€œbuildโ€ phase, it will read the file and transfer or dump it based on the contents. Project C now just controls proxy B using the CC BuildStatus element.

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

In the distributed approach, Project B will still run on the Windows computer, but DistributedBuilder will remotely run the script and then return the results to the CC server.

+2
source

Are you mixing CruiseControl and CruiseControl.Net? To configure CruiseControl.Net, just use Project Trigger .

0
source

All Articles