views:

354

answers:

1

Assumption: I'm very new to the Continuous Integration space.

What is the method I should use for Extracting, Testing, Compiling, Deploying an ASP.NET (.NET 3.5) application.

Step 1) Sometimes I would like to pull the latest source from TFS, and sometimes Subversion.

Step 2) Run all tests. (I am currently using MbUnit)

Step 3) If all tests pass build a release version.

Step 4) Deploy the code via FTP - replacing the current app at a specific URL

I'm looking for solutions that easy to learn & setup, and low cost or free / open source.

Would MSBuild be the easiest thing to do for step #3. Since I don't really want to do anything special ... just provide a solution name and compile it. My main concern is finding something abstracts away any major issues caused by requirement/step #1.

+1  A: 

We use CruiseControl.net, however your first requirement could be a bit of an issue. Could you explain how you make the choice as to which repository you pull the source from. CC.NET can work with either of those, or could work with both at the same time if you got a bit clever with the ccnet.config settings, but it's more down to how you know which one to pull from.

The rest of it is easy, I use NAnt to do the real work and its easily up to that.

edit:

NAnt hasn't been updated for some time, the development stopped when MSBuild was released. If you do a search on stackoverflow you will find quite a few "should I swap to MSBuild" type questions, personally we have a reasonable amound of knowledge in NAnt, it does what we want, and there are some things that we do that appear very hard in MSBuild so we will hang on for a while longer.

CruiseControl.NET has tasks that can call MSBuild directly, we still call DevEnv directly as we build a lot of deployment projects which is something that MSBuild has trouble doing.

Our NAnt script takes us all the way from pulling the right source out of ClearCase all the way to packaged product ready for shipping.

However, NAnt is just one option, if you are happy with another scripting language such as PowerShell then there is no reason why that shouldn't be used. CruiseControl.NET can call any executable as a task using the tags and passes a lot of information through using envirionment variables. This page: http://confluence.public.thoughtworks.org/display/CCNET/Executable+Task details what gets passed on.

In terms of using the same steps the only difference between the two setups would be the source control block in the ccnet.config file, our NAnt script doesn't change at all when we change the view being used as everything is relative and we hapen to have a standard layout for our views which means we know where everything is all of the time.

Hope that helps a bit more.

Alan.

Alan Mullett
TFS would be for work. Subversion would be for my side-work. I'd like to use the same steps for the rest of the process. Is NAnt still active.. the website makes it look like the last update was on Dec 8th, 2007. Has MSBuild become the new "it" thing?
tyndall
How easy is it to compile a solution with NAnt? Can you do it in one line/mode of XML? I'm getting a little bit better with PowerShell if I needed to glue some of the steps together.
tyndall
I've edited the post to add thoughts about these things. Alan.
Alan Mullett