Index > Developers > Release Procedure

Release Procedure

Subversion commit over https Required

This is the most important thing and the easiest to get wrong. If you can not commit to the repo, the release will fail in the middle and you will have to rollback the changes by hand.

You must be able to commit using svn over https to do a release. Make sure your check out is over https

$ svn info
Path: .
URL: https://svn.codehaus.org/xbean/trunk

Also make sure you can commit to the https checkout. This requires that you have a password setup on Codehaus, which is not the default for new Codehaus accounts. Double check this by making an insignificant change to a file and cheking it in.

$ vi somefile
$ svn commit somefile

Rollback

If you mess up and need to rollback simply, generate a diff from svn, apply the diff using patch and commit:

$ svn diff -r155:154 > my.diff
$ patch -p0 < my.diff
$ svn commit

Performing the release

For the latest release (3.2), here is the command i used instead of the release:perform command which loops indefinitely:
mvn deploy -Prelease-environment -Dgpg.passphrase=xxxx -Ddeploy.altRepository=apache.releases::default::scpexe://people.apache.org/home/gnodet/public_html/xbean-3.2

Using scpexe in addition to "ssh -M" in another terminal works great and this work around the problem indicated at http://jira.codehaus.org/browse/WAGONSSH-54.

  1. Make sure your code is up to date and you have no pending work
    $ svn up
    $ svn status
    
  2. Test that you can deploy to the remote maven repository
    $ mvn -N deploy
    
  3. Prepare the release
    $ mvn release:prepare
    
    ....
    [INFO] What is the release version for 'org.xbean:xbean'? [2.0]
    <press enter>
    
    ....
    [INFO] [release:prepare]
    [INFO] What tag name should be used?
    xbean-2.0           <==== use <artifactId>-<version>
    
    .....
    [INFO] Verifying there are no local modifications ...
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean'? [2.0]
    <press-enter>
    
    
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean-classpath'? [2.0]
    <press-enter>
    
    
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean-spring'? [2.0]
    <press-enter>
    
    
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean-kernel'? [2.0]
    <press-enter>
    
    
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean-jmx'? [2.0]
    <press-enter>
    
    
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean-server'? [2.0]
    <press-enter>
    
    [INFO] Checking in modified POMs
    [INFO] Tagging release with the label xbean-2.0.
    [INFO] What is the new development version for 'org.xbean:xbean'? [2.1-SNAPSHOT]
    <press-enter>
    
    [INFO] Checking lineage for snapshots ...
    [INFO] Checking dependencies for snapshots ...
    [INFO] Checking plugins for snapshots ...
    [INFO] What is the release version for 'org.xbean:xbean-server'? [2.0]
    <press-enter>
    
    
    [INFO] Checking in modified POMs
    [INFO] Tagging release with the label xbean-2.0.
    [INFO] What is the new development version for 'org.xbean:xbean'? [2.1-SNAPSHOT]
    <press-enter>
    
    
    [INFO] What is the new development version for 'org.xbean:xbean-classpath'? [2.1-SNAPSHOT]
    <press-enter>
    
    
    [INFO] What is the new development version for 'org.xbean:xbean-spring'? [2.1-SNAPSHOT]
    <press-enter>
    
    
    [INFO] What is the new development version for 'org.xbean:xbean-kernel'? [2.1-SNAPSHOT]
    <press-enter>
    
    
    [INFO] What is the new development version for 'org.xbean:xbean-jmx'? [2.1-SNAPSHOT]
    <press-enter>
    
    
    [INFO] What is the new development version for 'org.xbean:xbean-server'? [2.1-SNAPSHOT]
    <press-enter>
    
    [INFO] Checking in development POMs
    [INFO] ----------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    
  4. Verify you are ready for a release.
    Several commit messages should have been sent to the xbean scm list and you should now have a release.properties file in the current directory.
    $ cat release.properties 
    #Generated by Release Plugin on: Wed Nov 09 16:46:51 PST 2005
    .....
    
  5. Execute the release
    $ mvn release:perform
    
  6. Verify the jars were uploaded to the repositories
  7. Deploy SNAPSHOT jars for the new development release
    $ mvn deploy
    
  8. Verify the new development snapshot jars were uploaded to the repositories