Naturally I want some sort of continuous integration system. But what makes my situation unusual is that what I want to build is structured in an unusual way, and it's not clear to me if CruiseControl.rb can gracefully handle that structure.
I want to independently build half a dozen "projects", each of which (in CruiseControl.NET terms) is its own "queue". Each corresponds to one deliverable set of files. (One project represents our web site; another represents a Windows installer that we build ... etc). Now, those projects don't simply correspond to a single Subversion URL; instead, each is composed of a number of "kits", each of which has its own Subversion URL. We have about 50 separate kits; most are basically a bunch of C-sharp files and a .csproj file. Each kit typically depends on some others; the kits thus form a directed acyclic graph of dependencies. We have a tool that will build a kit, and all its dependencies; and will also check them out of Subversion if needed. I wrote this tool myself and am perfectly comfortable hacking it. For each project, I want CruiseControl.rb to monitor the bits of the subversion repository that correspond to the constituent kits, and trigger a build whenever anything changes in those bits. Note that this is not the same as monitoring the entire repository, since I don't want a change in an unrelated kit to trigger a build for this project; nor is it the same as monitoring just one kit, since the project depends on many kits. Our building tool already knows how to determine whether a kit needs to be updated, so I'm imagining that CruiseControl.rb would simply invoke the build tool as a subprocess. At first I thought I would be able to teach it to do this by suitable fiddling of the "SourceControl" class, but I quickly confused myself -- partly because I haven't yet figured out how CruiseControl.rb works, and partly because I barely know the fundamentals of Ruby. I also have a very vague suspicion that, fundamentally, CruiseControl.rb assumes that there's a one-to-one-to-one correspondence between projects, Subversion URLs, and working copies; and that I'd need to change that assumption in order to get things working the way I want. Anyway: does sound doable -- for someone who's a decent programmer but new to Ruby -- and if so, do you have any advice on how to start? _______________________________________________ Cruisecontrolrb-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/cruisecontrolrb-users
