Warning you now tha this will be a very long email, but I
think it's a question that some of you must have dealth
with, so hopefully you'll read it. And even if you haven't
dealt with this, it's an interesting scenario. 

I'm creating automated build process for a large,
distributed system. There are dozens of individual
applications, but overall they make up one large system. 

There are multiple database servers (each housing different
data)

There's a web farm of several identical machines, each
running many different web applications (which are coupled
to varying degrees, either via shared COM objects, shared
asp files, and/or shared databases).

There is also an additional web server that houses internal
tools for used for managing varying aspects of the system.
That machine has a couple websites running on it, coupled
to the other systems, albeit more loosely, through shared
databases.

There are also a few backend machines running middle tier
logic (jobs processing). There are two classes of these
machines. We'll call them class A and class B. There could
be multiple identical machines of either class in
production. 

The code is spread out across several projects in our
source control (StarTeam). An example of why I don't like
the current organization is that for two of the more
coupled web apps, dependencies for one project are held in
another starteam project. Changing either usually means
chaning components in both projects, (and currently manual
build, and messy manual deployment, until we start using
the scripts). I got around this by creating a view in a
neutral starteam project and sharing all the source for the
components between the two apps in this view. The build
scripts build from this, and label that view. 

So my question to you is, should such a system have a
single automated build, with a single version number for
the whole thing? 

I'm inclined to continue pulling code from other projects
into this neutral view and eventually have the entire
system built from this location, and versioned/labeled
here. This way I can generate builds for any and all of the
machines (web farm, internal tools, class A & B middle
tier, etc) as they existed for any release, and also know
exactly what the source code generated any version of the
compiled binaries (or which .asp scripts were in a release
along with which COM components, etc). Right now it would
be difficult to know what code created which binary (even
if I knew). And I also like the fact that the build.number
file in the root of the neutral view dictates the build
number, and each automated build uses this number to label
the neutral view. One build number for the entire system. 

What would be the drawbacks to a process like this? Speed
might be a concern. Another would be that the entire system
would be rebuilt with any release, so changes to a
component on the IIS machine that wouldn't really affect a
back-end jobs machine, would result in rebuilding
everything and we'd get a new install package to deploy to
the jobs machine. For this reason I don't want to include
.asp files in the build. Still not sure though.

There are probably ~40 VB6 COM objects (23 of those are
already part of what I've automated in the neutral view),
fewer than a dozen .NET 1.1 projects, and hundreds
(probably > 1000 actually) of .asp files, hundreds of
database tables, and hundreds of stored procedures in all. 

"Few are those who see with their own eyes and feel with their own hearts." 
-Albert Einstein

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to