This page last changed on Jun 02, 2010 by alitokmen.
Releases are now performed using Maven 2 so you need to have Maven 2 installed (see the building page).
- There four several artifacts which have separate release cycles (in this order): pom, resources, core, extensions.
- In each artifact:
- Check if there have been SVN commits on that artifact since the latest stable release. If there have been, you'll need to release.
- The parent and resources typically don't change between versions.
- In the artifact's topmost pom.xml, if there are links to other modules (core/pom.xml contains a property called cargo.resources.version, for example), update these to the latest release
- Release the artifact
- In the artifact's topmost pom.xml, change the links to the other modules' versions to the latest SNAPSHOT back again
- Before releasing, make sure what is going to be released is fully functional. In particular, run the core/samples using the all-downloadable profile (mvn clean install -Pall-downloadable).
- The Continous Integration for CARGO actually passes tests for all containers. Green ones are doing well

- If any container is not passing, move it to the all-unstable-downloadable list.
- Make sure all containers in the all-stable-downloadable profile pass the samples.
- Releases are done with the maven release plugin.
- You can supply your credentials on the command line (-Dusername=<username> -Dpassword=<password>), or keep them in your settings.xml file (in your .m2 directory or in your user home directory. Here's an example settings.xml:
<settings>
[...]
<servers>
<server>
<id>cargo-snapshot</id>
<username>USERNAME</username>
<password>PASSWORD</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<server>
<id>cargo-release</id>
<username>USERNAME</username>
<password>PASSWORD</passowrd>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<server>
<id>cargo-website</id>
<username>USERNAME</username>
<password>PASSWORD</passowrd>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
</servers>
</settings>
- Please do a dry-run before doing the actual release to ensure there aren't any problems.
- The typical Maven release procedure is to execute these four commands:
- mvn clean install : to make sure the current artifact builds correctly (including tests)
- mvn clean release:prepare -DautoVersionSubmodules=true -DdryRun=true -DpreparationGoals="clean install" : the dry run, to check if everything is OK
- mvn clean release:prepare -DautoVersionSubmodules=true -DpreparationGoals="clean install" : the actual release preparation, with the actual tagging process
- If the Subversion commit fails, try executing the same command but add -Dusername=your_user_name -Dpassword=your_password (of course, replace with your own user name and password on the CARGO SCM)
- mvn clean release:perform -DpreparationGoals="clean install" : deploys the tagged artifacts on the Codehaus repository (itself mirrored by the Maven central repository, with a delay of 24 to 48 hours)
- Log onto Cargo JIRA, release the current version and add the next version
- Check that the Cargo wiki is up to date. Specifically, perform the following updates:
- Modify the status on the home page about the delivery:
- Make sure the Containers list is complete
- Make sure the Navigation page is complete
- Make sure the Javadocs for the Core Containers are complete
- Make sure the documentation for each container is up to date. The source files (that you need to copy-paste in each container's page manually) are generated in core/documentation/target/[container's name].log.
- Modify the Downloads and Archived Downloads pages to update the download links
- Create a release notes page for the new version
- Export the wiki to a zipped HTML file and add it the Downloads page
- Send an announcement email to Cargo mailing lists (and to other relevent sites)
- Create a blog post
|