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

Reply via email to