Reputation: 16802
Here at work we are using Subversion and CruiseControl.NET and as our source control and CI tools. Our Subversion structure is setup like the following:
Project
Branch
Tag
1.0.0.0
1.0.0.1
1.0.0.2
Trunk
At present our process for creating builds is to create a tag from the trunk and a run batch file to build our solutions for the tag. The batch file also runs all of our MSTests and calculates our code coverage results.
I was wondering if this is a normal practice or if it would be better to build form trunk and use CI (Hudson or similar) to automatically create the tag?
Upvotes: 1
Views: 686
Reputation: 63652
Tags should be cheap copies of the trunk, so what you're doing is fine providing you're happy with creating a tag for both potentially successful and unsuccesful builds.
With the trunk build then tag process you can create it so that it only creates a tag based on whether the build succeeds or not. This is helpful if what you want to tag are release builds, or potential release builds - you know that at least it builds correctly and passes a number of tests. This sounds to me like a better option
Regardless of which process you end up sticking with I would definitely look at using Hudson over Cruise Control. You'll be able to setup a much more sophisticated build process with build promotion and tagging based on success. Take a look at the following for build promotion:
http://configmanag.blogspot.com/2008/08/build-promotion-with-hudson.html
and the following for tagging successful builds using a Hudson plugin:
http://wiki.hudson-ci.org/display/HUDSON/Subversion+Tagging+Plugin
Upvotes: 1