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.
>

Reply via email to