Hello all, I've seen threads on similar topics to this, however haven't been able to find anything extant thus far which meets our precise requirement. Hence, before I launch into creating a custom solution, I thought I would ask for any ideas/suggestions/pointers to existing tools.
We use CCNET - primarily with NAnt and VssConnect. To cope with a few facets of our build set up (e.g. no plugin currently exists for VssConnect as is, no time currently to write one either!) plus the fact that our build server is quite low spec, we use a build task executing a NAnt script to update a local folder, which serves as our source repository for builds - this is monitored by CCNET, which starts builds accordingly. This is fine, however, occasionally the processes clash, and something builds while the 'VSS Cache' task is running, which can cause failures (especially since every 10th or so update intentionally deletes and recreates the cache to ensure it is kept healthily in sync). What we want to do is to lock around this task - the existing sequential task plugin would allow us to create locks around such things, however, we use a number of build queues to allow parallel building, and want to keep this - having read the docs on sequential tasks, we'd have to put a lock wrapper into all tasks to prevent clashing with VSS Update, which would essentially bring us back to no parallel builds. Does anybody know of an existing way to do this locking? Essentially the summary is: 1. Task A should not start until no other tasks are running 2. No other task should start until Task A has completed running 3. Tasks B, C, D (ad nauseum) should be able to run in parallel, if their queues permit, providing assertions 1 and 2 are both kept as true If nothing exists that can quite cope with this, I will be setting something up to do so - in that case, would anybody else be interested in this being a plug-in (or even contribution? I think it is too niche for that, though) to CCNET? If so, I will create it in this manner and make it publicly available - if not, I will just sort out something quick and in-house! Cheers, Matt Chatterley
