As far as I am aware, there is no semaphore or mutex task in CC.NET. I thought I saw one somewhere once, but I have been unable to find it anywhere.
Craig -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Matt Schuckmann Sent: Wednesday, 5 August 2009 8:12 a.m. To: ccnet-user Subject: [ccnet-user] Proper use of integration queues, or restricting a how many projects can run the same task Here is my issue I've got several projects that pretty much the they just operate on different branches of our source tree, they all work fine and up until now they are completely independent and can all run at the same time if they want to without any problems. Now I'm trying to setup each of the projects to automatically push the symbol files into the a Symbol server via the nifty Microsoft command symstore.exe. So each project will now have a task that looks something like this: <exec> <executable>c:\program files\Debugging Tools for windows (x86)\symstore.exe</executable> <buildArgs> add /r /s \\hooke.corp.imoveinc.com\Symbols /t "%CCNetProject%" /v "<cb:project_tagPrefix/>%CCNetLabel%" /c "%CCNetProject% - %CCNetBuildDate%" /f bin\release\*.* </buildArgs> <buildTimeoutSeconds>1200</buildTimeoutSeconds> </exec> The problem is the microsoft documentation states that for a given symbol server database (which is really just a directory structure) there can only be one add operation at a time. So my question is what is the best way to ensure my build system enforces this requirement? Currently my thoughts are: 1. Cross my fingers and don't worry about it cause we really don't do all that many builds. 2. Place all my projects in the same integration queue and just don't allow building multiple projects at the same time but this kind of sucks, that will really slow things down if 2 or more projects need to be built at the same time. 3. For each project create a dependent project that does the add to the symbol server, and use the forcebuild publisher to cause that project to run at the end of each project build. Each of the projects that do the add to the symbol server will be placed in a SymbolServerAdd integration queue to insure only one of those ever runs at the same time. This option seems like it will work but it does add some complexity and it doubles the amount of projects that I have. Currently I'm try to do 3 but I'm wondering if there is some other option that would be simpler, something like specifying a execution queue or semiphore on the exec task that would apply across all projects (does that make sense?) Thanks, Matt Schuckmann 2.
