tags:

views:

485

answers:

3

Hi , This is a doubt regarding the material published in the following link "http://confluence.public.thoughtworks.org/display/CCNET/Integratio+Queues"

which tells that "The default behaviour of CruiseControl.Net is that each project defined in the configuration is given its own integration thread, thereby allowing differently named projects to build concurrently.

Note however that a single project can never be building more than once at the same time. If you force a build on Project X while it is already integrating, that force build request is effectively blocked until the previous integration completes. So you can also think of this as each project having its own dedicated integration queue, where only the item at the head of the queue can be currently building, with at most one request pending."

But this is really contradicting in my case as when i force my build it opens my IDE and starts the integration and building which takes about 3 min approx. but when i force my build in between the execution on my webdash board i see that it again opens another IDE and starts the building which is not acceptable.According to the link shown above,it should queue and wait for the 1st IDE execution to complete and then go for the 2nd one.

Can u plz suggest any solution to this problem??

with kind regards Maddy

A: 

Maybe this is a problem (from the CCNet docs, even I didn't know about this setting):

duplicates: Specification of how to handle duplicate requests within a queue. Possible values are UseFirst, ApplyForceBuildsReplace and ApplyForceBuildsReAdd.

http://confluence.public.thoughtworks.org/display/CCNET/Queue+Configuration

Igor Brejc
<project name="VSAT"> <sourcecontrol type="filtered"> <sourceControlProvider type="filesystem"> <repositoryRoot>C:\MyProj</repositoryRoot> <autoGetSource>true</autoGetSource> <ignoreMissingRoot>false</ignoreMissingRoot></sourceControlProvider>.This is the intial part
hi all,I just added this <project name="NGFMS" queue="Q1" queuePriority="1">but still i see it invoked another IDe when the present one is doing its building.Can anyone plz suggest any solution??ThanksMaddy
Igor Brejc
Igor,I hav put the whole ccnet.config file in the below section of "Answer your Onw Question".Plz hav a look at itThanksMaddy
Thanks igor,but still i face this same problem again??
You say you force the build using the Web dashboard. But on my CCNet server (1.4.3) once the build starts, the dashboard does not show the "Force" button (it's "Abort" instead). So I'm not sure how you are able to force it, other than you have something wrong with your setup.
Igor Brejc
No,actuall when i force my build and my IDE gets invoked and starts the building and after the integration success status comes and we can see the force Button again and when we force it again ,another IDE opens and starts the building which is not acceptable in my case.I hope u got my problem??/
OK, now I get it... your description of the problem in the starting question was a bit off the mark.I suggest you do not use IDEs in your automated build process, for exactly these kinds of reasons. What IDE are you using, by the way?
Igor Brejc
I am using a windriver IDE and its been invoked indirectly through nant scripts i.e.nant is invoking VB scripts invoking two.bat files and which is inturn invoking my wind river.I had to do this indirect invocation as i was unable to invoke it directly through my nant scripts.Thanks maddy
I remember you asking about this in some other question. Anyway, all I can suggest to you is to first fix your Nant script to run the build (and close the IDE after that) from a command line. Only then you should start playing around with CCNet.
Igor Brejc
yes,may be i should be able to find an answer for invoking my IDE directly through my nant scripts rather than invoking it indirectly.ThanksMaddy
A: 

We use Integration Queues for a pipe-lining purpose in-case your Projects have dependencies and u want to Build them in an order.

This is how it works:

  ...
  <!-- Put all related projects in same Q, here MyProjectQ-->
  <!-- Set queuePriority, based on who-is-dependent-on-whom --> 
  <project queue="MyProjectQ" queuePriority="1">
    <name>MyProject.Main</name>
  </project>
  <project queue="MyProjectQ" queuePriority="2">
    <name>MyProject.Installer.All</name>
  </project>
  ...

HTH

nils_gate
But i am just having a single project rather than two projects.I am not able to queue it up.Its starting another IDE before the first IDE finishes its building.
A: 

This is the ccnet.config file shown below cruisecontrol>

 <project name="VSAT" queue="Q1" queuePriority="1">
 <sourcecontrol type="filtered">
   <sourceControlProvider type="filesystem">
     <repositoryRoot>C:\MyProj</repositoryRoot>
     <autoGetSource>true</autoGetSource>
     <ignoreMissingRoot>false</ignoreMissingRoot>
   </sourceControlProvider>
 </sourcecontrol> 
 <triggers>
        <intervalTrigger name="continuous" seconds="240" buildCondition="IfModificationExists" />
 </triggers>
 <tasks>
   <nant> 
      <executable>C:\Nant-0.85\bin\NAnt.exe</executable>
  <buildFile>nant.build</buildFile>
   </nant>
 </tasks> 

 <!--<triggers>
   <intervalTrigger seconds="50" buildCondition="ForceBuild"/>
  </triggers>-->
  </project>
</cruisecontrol>

My nant.build file is invoking an IDE always when it sees any modification.The problem is it doesnt queue even though i specify that in my ccnet.config file???

Thanks Maddy

It's not the WHOLE cc.net project configuration... Paste the hole <project>...</project> thing, to see what triggers you have, tasks etc. Without it it's very difficult to see what causes the rebuild problem
Igor Brejc
Just edited the source to show the whole of the posted XML. Should be better now. :)
ZombieSheep
Ok, it doesn't seem to be anything wrong with the configuration. Which version of CC.NET are you using?
Igor Brejc
I am using cruise control.NET 1.4.3.
Please take a look at my updated answer.
Igor Brejc