Is your vss task in it's own build project? You could set up
triggering so other builds don't run unless that one is completed. The
issue seems to be that this task is operating on a dir structure also
scanned for changes by another build. You need to find a way to
separate them.
Sent from my iPhone
On Aug 27, 2008, at 3:59 AM, "Matt Chatterley" <[EMAIL PROTECTED]
> wrote:
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