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