Release Process

Preparation

The following process uses various release version numbers throughout. Modify this according to the current release.
  • common.properties
    8. Generate an SVN log file. To do this use:
      svn log -r HEAD:561 -v > KOWARI-MODIFICATIONS/mods-mulgara-ver.txt
    

    Replace the ver part of the filename with the new release number. 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).
    9. Create a checkpoint:
    1   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)
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 LEGAL.txt still applies (e.g. check for new versions). Update that file.
6. Ensure that the version number is up to date in:

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:
1   mkdir /tmp/v1.1.0

3. Create the source archive from the new export, and copy to the release directory:
1   cd ~/src/mulgara/release
2   tar czf mulgara-1.1.0-src.tar.gz mulgara-1.1.0
3   zip -r mulgara-1.1.0-src.zip mulgara-1.1.0
4   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:
1   cd ~/src/mulgara/release/mulgara-1.1.0/
2   ./build.sh dist
3   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):
1   mkdir -p ~/src/mulgara/release/tmp/mulgara-1.1.0/dist
2   cp mulgara-1.1.0/dist/mulgara-1.1.0.jar tmp/mulgara-1.1.0/dist
3   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:
1   cd ~/src/mulgara/release/tmp
2   tar czf mulgara-1.1.0-bin.tar.gz mulgara-1.1.0
3   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:
1   cp ../mulgara-1.1.0/dist/*.[jw]ar mulgara-1.1.0/dist
2   tar czf mulgara-1.1.0-bin-all.tar.gz mulgara-1.1.0
3   zip -r mulgara-1.1.0-bin-all.zip mulgara-1.1.0

8. Copy all the binary archives to the release directory:
1   cp *.tar.gz *.zip /tmp/v1.1.0

9. Change to the release directory, and generate the MD5 sums:
1   cd /tmp/v1.1.0
2   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:
1   # on the server - this is not svn
2   mv /tmp/v2.1.5 ~/pag/files
We used to use the following, but svn was taking up too much space for all of these updates:
1   # presume that the web SVN is in ~/www
2   cd ~/www/mulgara-web
3   svn update
4   mv /tmp/v1.1.0 files
5   svn add files/v1.1.0
6   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).
*** Also update Download with the new MD5 sums. You can get this as a formatted block with:
1   cat *.md5 > tmpfile
2   vi tmpfile
3     :%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.
  • Update the front page and download page in the wiki: http://mulgara.org/trac/wiki/Download
    3. Commit all these changes to the site:
    1   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:
    1   svn co http://mulgara.org/svn/mulgara-web mulgara-web
    

    5. Back on the server, place updates on the web site:
    1   cd /var/www/mulgara-web
    2   svn update
    

    23. Announce the release to the mailing lists ( and )

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
----
release 2.0.7 was revision 1413

Posted by Paul Gearon at December 6, 2008
----
release 2.0.8 was revision 1470

Posted by Paul Gearon at January 31, 2009
----
release 2.0.9 was revision 1545

Posted by Paul Gearon at February 25, 2009
----
release 2.1.0 was revision 1680

Posted by Paul Gearon at April 23, 2009
----
release 2.1.1 was revision 1686

Posted by Paul Gearon at April 23, 2009
----
release 2.1.2 was revision 1735

Posted by Paul Gearon at June 10, 2009
----
release 2.1.3 was revision 1778

Posted by Paul Gearon at August 17, 2009
----
release 2.1.4 was revision 1819

Posted by Paul Gearon at December 10, 2009
----
release 2.1.5 was revision 1876

Posted by Paul Gearon at December 10, 2009
----
release 2.1.6 was revision 1887

Posted by Paul Gearon at December 17, 2009
----
release 2.1.7 was revision 1926

Posted by Paul Gearon at February 16, 2010
----
release 2.1.8 was revision 1949

Posted by Paul Gearon at May 05, 2010