Here is my issue I've got several projects that pretty much the they
just operate on different branches of our source tree, they all work
fine and up until now they are completely independent and can all run
at the same time if they want to without any problems.

Now I'm trying to setup each of the projects to automatically push the
symbol files into the a Symbol server via the nifty Microsoft command
symstore.exe. So each project will now have a task that looks
something like this:

    <exec>
      <executable>c:\program files\Debugging Tools for windows
(x86)\symstore.exe</executable>
      <buildArgs>
        add /r
        /s \\hooke.corp.imoveinc.com\Symbols
        /t "%CCNetProject%"
        /v "<cb:project_tagPrefix/>%CCNetLabel%"
        /c "%CCNetProject% - %CCNetBuildDate%"
        /f bin\release\*.*
      </buildArgs>
      <buildTimeoutSeconds>1200</buildTimeoutSeconds>
    </exec>

The problem is the microsoft documentation states that for a given
symbol server database (which is really just a directory structure)
there can only be one add operation at a time.
So my question is what is the best way to ensure my build system
enforces this requirement?

Currently my thoughts are:
1. Cross my fingers and don't worry about it cause we really don't do
all that many builds.
2. Place all my projects in the same integration queue and just don't
allow building multiple projects at the same time but this kind of
sucks, that will really slow things down if 2 or more projects need to
be built at the same time.
3. For each project create a dependent project that does the add to
the symbol server, and use the forcebuild publisher to cause that
project to run at the end of each project build. Each of the projects
that do the add to the symbol server will be placed in a
SymbolServerAdd integration queue to insure only one of those ever
runs at the same time. This option seems like it will work but it does
add some complexity and it doubles the amount of projects that I
have.

Currently I'm try to do 3 but I'm wondering if there is some other
option that would be simpler, something like specifying a execution
queue or semiphore on the exec task that would apply across all
projects (does that make sense?)

Thanks,
Matt Schuckmann


2.

Reply via email to