Projects release guide
The following is a step by step guide on how to release Castle projects.
This guide intended audience are project leaders.
Pre-requirement
- You(or someone else) need to have svn write access
- You need to be able to upload files to Source Forge, since sf.net has been updated the only people that are allowed to upload files are administrators
- Make sure the website doco for your project is updated and ready to be committed as part of the release
- You(or someone else) need to have writes to create a new "Build Configuration" in our Build Server
Quick Note
If you do not have writes to do any of the above operations, do post a message on the development mailing list for help.
Steps to create a new release
- Make sure you are happy with the current version in your project trunk and all unit tests are passing in the buildserver
- Make sure you have updated the Changes.txt of the project
-
Also make sure that the package(zip file) that gets created automatically has all the files required for the release (look in the bin folder), if there are files missing check that the files are present in the build script, eg:
<patternset id="package.bin.set" > <include name="Castle.ActiveRecord.*" /> <include name="Castle.ActiveRecord.Linq.*" /> <include name="Castle.Components.Validator.*" /> <include name="Castle.Core.*" /> <include name="Castle.DynamicProxy2.*" /> <include name="log4net.*" /> <include name="NHibernate.Linq.*" /> <include name="Iesi.Collections.*" /> <include name="NHibernate.ByteCode.Castle.*" /> <include name="NHibernate.*" /> <include name="NHibernate.Search.*" /> <include name="*/*.resources.dll" /> </patternset>The package should contain all the files required to run your project including assemblies pdb and xml files, the dependant dlls, respective pdbs and xml files, licence files of third party components and any satallite assemblies. -
Modify the build scripts to update the assembly version of all assemblies you are releasing, eg:
Before
... <target name="init" depends="common.init"> <property name="assembly.version" value="1.0.0.0" /> <!-- OLD Assembly version --> <assemblyfileset id="project.references" basedir="${build.dir}"> ...After
... <target name="init" depends="common.init"> <property name="assembly.version" value="1.1.0.0" /> <!-- NEW Assembly version --> <assemblyfileset id="project.references" basedir="${build.dir}"> ... - Commit changes, note revision number xxx
- Run the trunk TeamCity build and ensure all tests are still passing
- Create a tag from the xxx revision number, if you are versioning your release eg 1.1.0 then call your tag 1.1.0
- Update the svn:externals buildscripts property of your tag to the revision number xxx, this step ensures that the buildscripts used to build this release stay fixed.

- Get the zip package from the artifacts of the trunk TeamCity build, the file is called something like "castle-activerecord-net-3.5-release-15.zip"
- Unzip this file in your workstation and ensure all files required are in the bin folder
- Upload zip file to sf.net
- Commit the changes to the documentation on the Castle website
- Send an email to both castle-project-devel@googlegroups.com and castle-project-users@googlegroups.com announcing the release
- Announce the release on the front page of the Castle website (This step can be done as part of committing the changes to the documentation)
- Release complete :)
Quick Note
A branch was not created, a branch is only required if you encounter a bug in the release and need to put a fix for that release.
Steps to apply a patch to an existing release(that does not have a branch)
- Find the tag for the release that requires fixing and create a branch from the tag
-
Update the svn:externals buildscripts property of the branch just created to use the trunk version of the buildscripts

- Create a new Build Configuration in TeamCity to build the new created branch: The simplest way to do this is to copy the trunk one and then modify the checkout rules.
- Update the Changes.txt of the project
- Get the branch and apply the patch or whatever fixes you have
- Commit your changes to the branch
- Run the new TeamCity build and ensure all tests are passing
- From here on follow the instructions above to "create a new release"