Thanks Ruben. I'll take a look. I appreciate the help. On Thu, Aug 26, 2010 at 12:25 PM, Ruben Willems <[email protected]>wrote:
> Hi > > Take a look at the following blogs : > http://csut017.wordpress.com/ > http://rubenwillems.blogspot.com/ > > these hold a lot of info concerning the technical point of ccnet. > > > with kind regards > Ruben Willems > > > On Thu, Aug 26, 2010 at 4:48 PM, Bryan Robinson <[email protected]>wrote: > >> Hi, >> >> I've been using CruiseControl.NET (1.4.4 sp1) for some time and love it. >> Recently, we have found a need to customize some features to leverage all >> our resources. We have several large projects with test automation and >> these (functional) suites can take up to 24+ hours [each] to run. So, I >> want to leverage all 3 machines to be used as a true build farm. >> >> I have written a custom trigger that will look at a database table and >> check for pending builds for any of our products. If a row exists, it will >> force a build. However, my problem is that all 3 machines will queue up >> that same row no matter what. I have tried updating the row to reserve it, >> but even that doesn't work. Whichever ccnet instance grabs the build and >> executes it - it works fine. But the 2 other servers that have already >> queued it up will fail. >> >> What I was looking to do was get a status of each project on that ccnet >> server. If there was a running or pending build already, I would tell it to >> keep waiting. Here is the code I was trying to use to get the status on >> each project. >> >> private static bool isThereAPendingBuild() >> { >> XDocument config = XDocument.Load("ccnet.config"); >> >> var projects = from p in >> config.Element("cruisecontrol").Elements("project") >> select p; >> >> foreach (var project in projects) >> { >> string projectName = project.Attribute("name").Value; >> >> Project p = new Project(); >> p.Name = projectName; >> Console.Out.WriteLine("p.QueueName = {0}", p.QueueName); >> Console.Out.WriteLine("p.Activity.IsPending() = {0}", >> p.CurrentActivity.IsPending()); >> Console.Out.WriteLine("p.Activity.IsBuilding() = {0}", >> p.CurrentActivity.IsBuilding()); >> >> if (p.CurrentActivity.IsPending() || >> p.CurrentActivity.IsBuilding()) >> return true; >> } >> return false; >> } >> >> I looked through all the source code of ccnet, and just didn't know where >> to start - so I figured this could work too. However, it seems each Project >> in the ccnet.config file is running in its own thread - so it's hard to step >> through the code and troubleshoot it. >> >> Any ideas? Thanks. >> > >
