Fog Creek Software
Discussion Board

CVS and automated builds...

I'm struggling with "doing the right thing" here - finally got CVS all set up and all our projects established as modules. Now I'm working on the "one button build" concept and want a sanity check...

This is an ASP.Net project, and the CVS server is on the dev web server. My impression is that a "one click build" should:
a) check out the latest files from CVS
b) compile/build as necessary

Since it's a web app, the "application" is a bunch of aspx files and a dll. Does the "one click build" include deploying those files to the appropriate places on the web server? Or should that be a manual process? (I'd prefer it to be automated so anyone on the team can just click the button and the dev web server gets the latest thing)

Next question - the C# compiler is command-line driven, so that's scriptable. I can obviously just batch file the whole process, but is there a better install tool for managing web deployments? I'd like to be able to "one click" deployment to test and production, as well, using the same scriptwork.

Is anyone doing this with an project? Have any tools to recommend?

Of course, comments welcome...


Monday, June 9, 2003

We use Apache Ant for java projects.

It has a .NET counterpart:

We also use Martin Fowlers Cruise Control tool, although I'm not sure how well it integrates with .NET.

Rhys Keepence
Monday, June 9, 2003

I forgot to mention, Ant is used to script your build and deployment process, and Cruise Control is used to poll CVS, call Ant, run unit tests, and archive that build. It also updates a web page with details (date, time, test results, etc) on the latest build.

In the J2EE space there is the concept of an EAR (enterprise application archive) which is basically the entire application packed into a single file. That is dropped into a specific directory, and the app server will redeploy the application. Which makes the deployment bit somewhat easier.

Rhys Keepence
Monday, June 9, 2003

Are you using code behind pages Philo? (Just curious)

Dave B.
Monday, June 9, 2003

Dave - yes I am.


Monday, June 9, 2003

Philo -- do you have separate staging and final deployment servers?

A two-click process sounds sane to me.  The first click does the checkout, build, and deployment to the staging server (for QA).  The second click would copy from the staging server to the final deployment server.

Monday, June 9, 2003

We're currently using dev and production servers, I'm moving us towards dev, test, and production.

Dev is easy - it's the same box that CVS is on. Test and production are trickier - they're across the 'net and firewalled.

So I think my options for deployment to test & production are:
1) Good ol' manual
2) Open a VPN tunnel to the servers (Cisco firewall, so Cisco VPN client)
3) Authenticated SSL FTP



Monday, June 9, 2003

What do you guys do for automatic deploys for changes in the database schema?

Tuesday, June 10, 2003

Draco.NET ( ) is the .NET alternate to CruiseControl.

Quote from the link above "Draco.NET monitors your source code repository, automatically rebuilds your project when changes are detected and then emails you the build result along with a list of changes since the last build."

Tuesday, June 10, 2003

Thoughtworks is working on a .Net version of CruiseControl.

Giovanni Corriga
Tuesday, June 10, 2003


CruisControl is *not* Martin Fowlers.  He happens to work at the same company where it was developed, but that is all.  It was written by a totally different set of people.

Oren Miller
Tuesday, June 10, 2003

I think this link can be useful

Though they use SourceSafe it can be solved with some "wrapper" script checking files out from CVS.

Michael Popov
Tuesday, June 10, 2003

Although this isn't really what your after I thought I might add a link since this topic seems to have slowed.

Hippo.Net looks similar to Draco.NET but is aimed at Visual Source safe. I haven't used it, but though others may want to take a peak.

Wednesday, June 11, 2003

*  Recent Topics

*  Fog Creek Home