From: Olek <po...@gm...> - 2006-04-08 03:54:28
|
I did pretty much what you want this week. Look here for the idea: http://confluence.public.thoughtworks.org/display/CC/CruiseControl+Scheduling+Scenarios Scrol down to "The dependent build". That idea "kind of" works. The problem is that CC does not care in which order it builds master and slave projects when there are updates for both of them. Which means that sometimes dependent project bilds first, fails, that master project builds, than dependent project builds again successfully. I had to fix source code in 2 places to get it to work. (sorry I am on different computer right now, I will try to post diffs later if desired). 1. List of projects is contained in TreeMap, and is sorted by project name. Not exactly what most people woud want. Fix is simple - replace it with LinkedHashMap and - voila - it is sorted by the order in which projects appear in config file. Just what I wanted. 2. Even with first fix it still does not always work as expected. Problem is that CC creates new "life-cycle" thread for each project almost at the same time, and sometimes second thread gets control on semaphor/mutex/monitor first. Fixed by inserting artificial delay of 100ms after thread is created. This is not pretty, but it gets the work done - first thread for first project does gets that semaphor first and adds itself to build queue first. Now, this was fun bug to find ... ;) I think there might be a better solution to this problem, but I just wanted "simplest thing that could possible work". With those fixes, it works like charm ;) Now, it would be nice if somebody included those changes in official build. I do not like to work with tweaked versions of OSS - this is causing too much problems later on upgrade path ... regards, Olek On Fri, 7 Apr 2006, Ugone wrote: > Hi, > I have a tricky situation which is not fully covered > by the docs: I have two projects (Project1 and > Project2) such that Project2 should be built on CVS > changes but only if Project1 is up to date with CVS > and already built using the latest sources. To better > explain the situation I say that Project2 should not > be built if there are files on Project1 which are not > on the local copy (because it mail fail otherwise). > Both projects are built every 30 minutes. > I came up with this solution, but it doesn't seems to > be very good, although it seems to work (part of > Project2 CC configuration): > > <modificationset > > <cvs localworkingcopy="checkout/Project1" > property="opt.dont-build"/> > <cvs localworkingcopy="checkout/Project2"/> > </modificationset> > > The property opt.dont-build is such that Project2's > buildFile does almost nothing if it is set. > The drawback is that this way Project2 does a 'fake' > build everytime it finds modifications in Project1, > even if Project2 has no modification at all (ok, it > does nothing but the label gets incremented, which is > not that bad, but neither that good!) > Does anyone have a better idea on how to do such? > Thanks in advance. > Riccardo > > > > > > > > > ___________________________________ > Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB > http://mail.yahoo.it > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Cruisecontrol-user mailing list > Cru...@li... > https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user > > |