Release Process

Preparation

The following process uses various release version numbers throughout. Modify this according to the current release.

  1. Clear all release-blocker bugs (or downgrade and carry forward), as reflected in the issue tracking system.
  2. For major releases, announce a code freeze date to the developer mailing list. Wait until the code freeze occurs. Minor releases are typically about minor new features and bug fixes, so we are not worrying about a freeze (release early, release often).
  3. Test EVERYTHING and make sure all tests pass. Seriously.
  4. Validate that all the third-party code (in .../lib) has appropriate entries in the file LEGAL.txt. Ensure that the URLs to each are current. Ensure that the licenses for each are compatible with the project license and each other. Update LEGAL.txt accordingly.
  5. Verify that the file LICENSE.txt still applies (e.g. check for new versions). Update that file.
  6. Ensure that the version number is up to date in:
    • common.properties
  7. Generate an SVN log file. To do this use:
      svn log -r HEAD:561 -v > mods-mulgara-1.2.txt
    
    Replace the number shown (561) with the previous release point. This will be 1 larger than the first line in the most recent mods-mulgara- file found in KOWARI-MODIFICATIONS, or the last number in the comments section of this page. (Please keep these comments up to date with the release).
  8. Rename svn_log to KOWARI-MODIFICATIONS/mods-mulgara-version.txt, and commit.
  9. Create a checkpoint:
      svn cp http://mulgara.org/svn/mulgara/trunk http://mulgara.org/svn/mulgara/tags/release-1.1.0-final
    
    Use an appropriate release name/version. Subversion will then prompt for a message on the tag. (We used to use https here and not http. Both still work, but http is faster)

Release script

The following steps are all run automatically by the create_release_file.sh script. The steps are described here (using a version number of 1.1.0):

  1. Export the release. This can be done on a developer machine, but is more efficient on the server. This means that the server needs to get its own checkout first. The script puts this checkout into ~/src/mulgara:
      cd ~/src/mulgara
      svn co http://mulgara.org/svn/mulgara/tags/release-1.1.0-final release-1.1.0-final
      mkdir ~/src/mulgara/release
      svn export release-1.1.0-final ~/src/mulgara/release/mulgara-1.1.0
    
  2. Create a temporary release directory:
      mkdir /tmp/v1.1.0
    
  3. Create the source archive from the new export, and copy to the release directory:
      cd ~/src/mulgara/release
      tar czf mulgara-1.1.0-src.tar.gz mulgara-1.1.0
      zip -r mulgara-1.1.0-src.zip mulgara-1.1.0
      cp mulgara-1.1.0-src.tar.gz mulgara-1.1.0-src.zip /tmp/v1.1.0
    
  4. Build a distribution in a checkout:
      cd ~/src/mulgara/release/mulgara-1.1.0/
      ./build.sh dist
      cd ~/src/mulgara/release
    
  5. Create a temporary distribution directory, and copy the mulgara and querylang jars there (note that querylang was itql until v2.0.4):
      mkdir -p ~/src/mulgara/release/tmp/mulgara-1.1.0/dist
      cp mulgara-1.1.0/dist/mulgara-1.1.0.jar tmp/mulgara-1.1.0/dist
      cp mulgara-1.1.0/dist/querylang-1.1.0.jar tmp/mulgara-1.1.0/dist
    
  6. Create the binary archive from these two jar files:
      cd ~/src/mulgara/release/tmp
      tar czf mulgara-1.1.0-bin.tar.gz mulgara-1.1.0
      zip -r mulgara-1.1.0-bin.zip mulgara-1.1.0
    
  7. Copy the remaining distribution jars to the distribution directory. Then repeat the last step to create the -bin-all archives:
      cp ../mulgara-1.1.0/dist/*.[jw]ar mulgara-1.1.0/dist
      tar czf mulgara-1.1.0-bin-all.tar.gz mulgara-1.1.0
      zip -r mulgara-1.1.0-bin-all.zip mulgara-1.1.0
    
  8. Copy all the binary archives to the release directory:
      cp *.tar.gz *.zip /tmp/v1.1.0
    
  9. Change to the release directory, and generate the MD5 sums:
      cd /tmp/v1.1.0
      for i in *; do md5sum $i > $i.md5; done
    

Site Update

Once all the files are generated, they can be moved into place:

  1. Move the temporary release directory into place on the web server:
      # presume that the web SVN is in ~/www
      cd ~/www/mulgara-web
      svn update
      mv /tmp/v1.1.0 files
      svn add files/v1.1.0
      svn commit -m "New release"  # or a better comment if you prefer
    
    
  2. Update the Web site via your subversion checkout (add a release notes page, update the downloads page, update news, and the main page).
    • Download page needs search/replace on version number: :%s/x\.y\.z/x.y.v/g
    • Also update Download with the new MD5 sums. You can get this as a formatted block with:
        cat *.md5 > tmpfile
        vi tmpfile
          :%s#^\([^ ]*\)  \(.*\)#<tr><td>\2</td><td>\1</td></tr>#
      
      
    • The images/downloadNow.png file needs to be updated to reflect the version number. This requires Photoshop (maybe we should go with an unchanging image to avoid the need for Photoshop?). The photoshop file is in files/misc/downloadNow.psd.
    • Go through the modifications file (in KOWARI-MODIFICATIONS) to list all the updates, fixes, etc, present in this release. Try to maintain consistency with previous releases.
  3. Commit all these changes to the site:
      svn commit -m "Updated pages for new release"
    
  4. Checkout locally and play with the new pages. Try to make sure it all looks good, and that the links work. If you don't have a checkout, then you can get it with:
      svn co http://mulgara.org/svn/mulgara-web mulgara-web
    
  5. Back on the server, place updates on the web site:
      cd /var/www/mulgara-web
      svn update
    
  6. Announce the release to the mailing lists (mulgara-general@mulgara.org and mulgara-dev@mulgara.org)

Comments


The revision number for release 1.0.0 was 80.

Posted by Paul Gearon at Jul 16, 2007


The revision number for release 1.1.0 was 306.

Posted by Paul Gearon at Jul 16, 2007


Remember to make sure that http://docs.mulgara.org/index.htmlhas been updated to reflect the latest version number.

Posted by Paul Gearon at Jul 24, 2007


release 1.1.0 was actually revision 324

Posted by Paul Gearon at Nov 15, 2007


release 1.1.1 was revision 560

Posted by Paul Gearon at Apr 02, 2008


release 1.2 was revision 730

Posted by Paul Gearon at Apr 04, 2008


release 1.2.1 was revision 739

Posted by Paul Gearon at Apr 04, 2008


release 2.0-alpha was revision 948

Posted by Paul Gearon at May 15, 2008


release 2.0-beta was revision 1051

Posted by Paul Gearon at July 21, 2008


release 2.0.0 was revision 1106

Posted by Paul Gearon at July 23, 2008


release 2.0.1 was revision 1139

Posted by Paul Gearon at August 9, 2008


release 2.0.2 was revision 1151

Posted by Paul Gearon at August 22, 2008


release 2.0.3 was revision 1206

Posted by Paul Gearon at August 29, 2008


release 2.0.4 was revision 1235

Posted by Paul Gearon at September 4, 2008


release 2.0.5 was revision 1247

Posted by Paul Gearon at September 5, 2008


release 2.0.6 was revision 1338

Posted by Paul Gearon at October 16, 2008

Attachments