Corey,

Yeah - thats essentially the problem - essentially using a folder structure
as source control (well, as far as CCNET/Nant are concerned) isn't ideal.

In terms of achieving a solution via triggering, the only option I really
saw is filterTrigger, and the confluence docs on that one strongly imply
that it is literally used to prevent a build from happening (e.g. ignore
changes made when filter conditions are met) - which isn't really what I
want to do!

A _crude_ approach (not implementation specific), would be at the start of
each build to check a lock e.g:

1. Start Build script
2. Check if "VSSLock" has already been acquired by another process
3. If yes, wait N millis and re-check
4. If no, and I am the VSS process, acquire it and run, else run without
acquiring it

As you can see - close to sequential projects but subtly different, in that
I want all products to wait on a lock, but only one product (possibly 2) to
acquire the lock when they run!


Cheers,

Matt

2008/8/28 Corey Graham <[EMAIL PROTECTED]>

>
> 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
>>
>>
>>

Reply via email to